poi,一个简单的小工具,却暗藏杀机。掉坑里就得爬半天。
<poi.version>4.1.2</poi.version>
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency>
这个版本,设置颜色,用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。
这里不一定就用蓝色啊,只是我这里用了蓝色,具体可以根据你的业务,看哪个不常用,改改。毕竟可能会影响下一步操作的。