上次利用poi导出Excel,写了一个Excel的工具类,感觉还是挺好用的。但是有一个问题,Excel的头部是白色和下面的内容的颜色是一样的。这看着怎么可以。于是想着添加一下背景色
掉坑
Excel的处理逻辑从大到小,首先创建一个工作簿(sheet),然后创建里面的行(row),在行中创建单元格(cell),然后在cell中赋值这样Excel中的值就来。
所以我认为cell对象中直接设置背景颜色的方法setcolor这个方法。然而没有。只有一个setCellStyle的方法,传入的对象XSSFCellStyle,那只能创建这个对象。注意这个对象是用XSSFWorkbook创建的。
找到这个对象之后,看一下有没有关于颜色的方法,找到两个setFillForegroundColor和setFillBackgroundColor,看到方法肯定用setFillBackgroundColor,但是万万没有想到,直接把cell中内容覆盖了。所以使用setFillForegroundColor这个方法试一下,最后成功了,然后看api中介绍,发现api中介绍:many cells are actually filled with a foreground fill。
看到这个方法用的是XSSFColor对象,那就再new一下,看一下XSSFColor的对象和方法:发现一个public XSSFColor(Color clr)构造方法,注意这里面的Color对象是java.awt.Color而不是org.apache.poi.ss.usermodel.Color,可以直接用Color.RED设置红色。我调色的时候喜欢用rgb的数值来确定颜色,于是找到XSSFColor有setRGB方法,感觉离成功不远了,下面贴一下代码供大家参考
1 | val style = xssf.createCellStyle() |