poi,一个简单的小工具,却暗藏杀机。掉坑里就得爬半天。
4.1.2
org.apache.poi poi-ooxml${poi.version}
这个版本,设置颜色,用RGB咋弄都不行,背景都是黑色的,据说是java.awt.Color是测试阶段。
当然,你可以用他默认的这些颜色,具体参看这个 poi 颜色对照表_xcc_2269861428的博客-CSDN博客_poi颜色对照表
最后,改了workbook才行。不说我的惨痛历程里。直接看可以用的版本
//1、创建workbook部分,一定要用这个版本才行哦,
public void createWorkbook() throws DecoderException {
this.wb = new HSSFWorkbook();//创建个excel
this.sheet = wb.createSheet();//创建个页签
wb.setSheetName(0, sheetName);//页签起个名字
this.styles = createStyles(wb);
}
//2、设置背景颜色的部分
int[] rgb = new int[]{127,127,6};//定义颜色数组
HSSFWorkbook work=(HSSFWorkbook)wb;
HSSFPalette pallette = work.getCustomPalette();//获取调色板
pallette.setColorAtIndex(IndexedColors.BLUE.getIndex(),(byte)rgb[0], (byte)rgb[1], (byte)rgb[2]);//把蓝色的index处的颜色调整成我们自己定义的rgb颜色
style.setFillForegroundColor(IndexedColors.BLUE.getIndex());//把蓝色的index赋值给这个cell块的style
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);//设置填充模式为前背景色
简单解释下,第一创建一个excel,选择HSSFWorkbook,不要用XSSFWorkbook,要不后面的都跑不通,之前用了XSSFWorkbook,咋整颜色都是黑的,不论怎么从java.awt.Color变换,还是用数组直接传。
第二段是在excel原有的调色板中找了一个 “IndexedColors.BLUE.getIndex()”,把他的颜色设置成我们想设置的,然后再把这个index赋值给style。
这里不一定就用蓝色啊,只是我这里用了蓝色,具体可以根据你的业务,看哪个不常用,改改。毕竟可能会影响下一步操作的。



