1.背景

随着业务需求的扩充,简简单单的Excel导出已经不能满足客户的胃口了。而POI api这个家伙里面的坑有时候真的是让你分分钟没有脾气,所以打算记录下来,分享一下poi的坑及其解决方法。

2.POI导出Excel设置单元格背景色

2.1使用poi提供的背景色

//1.获取Excel工作簿对象
HSSFWorkbook wb = new HSSFWorkbook();
//2.获取sheet对象
HSSFSheet sheet = wb.createSheet("sheet名");
//2.创建单元格样式对象
HSSFCellStyle cellStyle = wb.createCellStyle();
//3.添加常用样式
cellStyle.setWrapText(true);//设置自动换行
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中显示
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
//4.设置单元格背景色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//填充单元格
cellStyle.setFillForegroundColor(HSSFColor.RED.index);//设置单元格背景色
//5.创建单元格并为单元格添加样式对象
/*5.1在创建单元格前需要先创建行 */
HSSFRow row = sheet.createRow(0);//这里就默认创建第一行
HSSFCell cell = row.createCell(0);//默认创建第一个单元格
cell.setCellStyle(cellStyle); //设置单元格样式
cell.setCellType(HSSFCell.CELL_TYPE_STRING);//设置单元格内容的类型
cell.setCellValue("Hello World!");//设置单元格内容

2.2使用自定义的背景色

使用自定义的背景色,需要额外的添加一些操作。这里以16进制的颜色为例,演示如何从16进制的颜色一步步设为单元格的背景色。

2.2.1自定义颜色方法

下述方法的作用简单来说就是:根据传入的HSSFPalette 画板对象和color16进制的颜色字符串,先转成RGB码,然后使用HSSFPalette画板对象和index下标重新设置对应下标的颜色,并对HSSFCellStyle单元格样式进行颜色的设置。

强调说明:

(1)在进行颜色重新生成的时候,即如下代码。需要注意index下标的范围是在[8,64],设置成其他数字的下标,无效!

palette.setColorAtIndex((short)(index), (byte) r, (byte) g, (byte) b);

(2)根据下标和RGB码重新设置完颜色后,后续需要使用的话只需要根据下标设置单元格颜色即可。

hssfCellStyle.setFillForegroundColor((short)(index));

/*** 设置自定义颜色* @param palette   excel工作空间的绘画板* @param hssfCellStyle   cell的单元格样式对象* @param color  16进制颜色字符串【如:#C1232B】* @param index  下标,范围在[8~64]*/public static  void setCellColor(HSSFPalette palette,HSSFCellStyle hssfCellStyle,String color,int index){//转为RGB码int r = Integer.parseInt((color.substring(0,2)),16);   //转为16进制int g = Integer.parseInt((color.substring(2,4)),16);int b = Integer.parseInt((color.substring(4,6)),16);//这里index是索引palette.setColorAtIndex((short)(index), (byte) r, (byte) g, (byte) b);hssfCellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); hssfCellStyle.setFillForegroundColor((short)(index));}

3.结尾

关于POI这家伙,里边还有许多的坑存在,以后遇到了会一一记录下来。关于自定义颜色这一块,其实也还没有做好,但是这里只是做一些简单的实现,类似颜色锁定等问题就不阐述了,因为基本上够用了。

POI导出——Excel实现单元格的背景色填充相关推荐

  1. POI导出Excel设置单元格背景色

    POI导出Excel设置单元格背景色 导出Excel的时候,没有设置背景色,用2003版本的Excel工具打开会出现文档单元格背景自动填充黑色的情况,没有找到好的解决方法,就主动给他填充一种颜色,问题 ...

  2. java导出excel表格设置行高,POI导出Excel设置单元格格式

    使用Apache的POI相关API导出Excel设置单元格格式 栗子,一下各个代码之间的变量是通用的,要是在某个代码块中找不到某个变量,则可以向上找寻 准备工作 InputStream = templ ...

  3. POI 导出 excel 设置单元格背景色 的坑

    1.必须调用设置前景色的方法来设置背景色: 2.必须调用 setFillPattern(): 3.代码如下: //cl.setFillBackgroundColor(IndexedColors.YEL ...

  4. POI导出EXCEL合并单元格对象嵌套List数据

    导出EXCEL 在实际的开发过程当中,我们会遇到一些比较复杂的导出需求,例如需要导出的实体类中需要嵌套集合对象等,正好最近碰到了所以分享出来,希望对大家有帮助 一.POI是什么 简单的说就是Apach ...

  5. poi导出Excel合并单元格、设置打印参数页眉页脚等

    由于生成文件不能落地,使用SXSSFWorkBook来对excel的导出工作 生成excel步骤: 1.创建workbook SXSSFWorkbook workbook=new SXSSFWorkb ...

  6. java POI导出excel,合并单元格边框消失

    业务是导出一个报表,要求有一个跨多列的表头,肯定要用到合并单元格,但合并后边框消失.网上的一些解决办法是重写合并单元格方法,但弄清楚原因后,其实没必要. 原来是这样的: 合并后就第一个有边框,其余全成 ...

  7. poi导出excel合并单元格

    /*导出服务*/@RequestMapping(value = "/exportMaintenance.html")public void exportMaintenance(Ht ...

  8. vue 导出excel,支持单元格合并,背景色,列宽,字体大小等

    npm下载 npm i xlsx.full.min npm i xlsx-style 关键代码如下 downloadExl(data, name, datab) {const wopts = {boo ...

  9. java poi设置单元格格式为数值_java中导出excel设置单元格的样式为数字格式怎么设置_Java代码实现设置单元格格式...

    java中导出excel设置单元格的样式为数字格式怎么设置 如果是使用poi,它会自动根据参数值设置单元格为恰当格式,只需传入数字类型参数值即可,比如 double value=....; cell. ...

最新文章

  1. Datawhale组队学习周报(第013周)
  2. 【Python】学习笔记总结3(Python文件操作)
  3. Visual Stutio中win32控制台应用程序、win32项目、MFC项目的区别:
  4. 领域应用 | 如何将知识图谱特征学习应用到推荐系统?
  5. RuntimeError: Expected object of device type cuda but got device type cpu for argument #2 'target'
  6. python调用接口获取文件_python接口文件使用说明
  7. 收藏 | 卷积神经网络中十大拍案叫绝的操作
  8. git commit命令
  9. python 脚本所在目录,Python 获取当前所在目录的方法详解
  10. stat,查看文件属性
  11. Picnic Planning
  12. CMAKE Opencv配置
  13. Excel的复合条饼图制作
  14. imx8mn同核异构开发cortex-M7
  15. 如何突破编程学习的瓶颈期
  16. dis的前缀单词有哪些_以dis为前缀的单词
  17. html svg文件怎么打开,SVG 在 HTML 页面
  18. SpringBoot 项目实现 Excel 导入导出功能
  19. Android 启用/禁用蓝牙传输文件功能(不能影响蓝牙耳机听歌)
  20. 《炒股的智慧》第6节文摘

热门文章

  1. 浏览器网页截屏实用小技巧
  2. MacBook 如何让Touch Bar电池电量显示百分比?
  3. C语言for循环使用方法
  4. 【考研英语-基础-长难句分析】基本结构_断开分析主谓【主谓主谓 主主谓谓】
  5. 显示杂谈(5)-DC调光与PWM调光
  6. (五)深入理解蓝牙Mesh的消息格式之“格式与长度”
  7. 高二学生如何利用假期进行一轮复习(附复习攻略)
  8. 南京5A景区选择飞鱼星为游客提供优质WiFi
  9. MapReduce分布式计算框架简介
  10. win10双磁盘安装ubuntu16.04双系统 GTX1660Ti+UEFI+GPT 亲测可行