单元格设置背景颜色失效原因
当只设定setFillForegroundColor时是不行的,还需要再设置一下 setFillPattern 即
style.setFillForegroundColor(某某颜色)style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
背景色的设置方式
// RGB 方式 即三原色 三个值都是从0-255选择填入style.setFillForegroundColor(new XSSFColor(new Color(0, 0, 0)));// 16进制 类似三原色 #后 每两位代表一种颜色style.setFillForegroundColor(Color.decode("#D8D8D8"));// POI提供的基本颜色XSSFColor color = new XSSFColor();color.setIndexed(IndexedColors.RED.getIndex());// style 通过 CellStyle cellStyle = wb.createCellStyle();// wb即 先创工作簿 类似 XSSFWorkbook wb = new XSSFWorkbook();style.setFillForegroundColor(color);
背景颜色生效后单元格边框线消失
可以放于单元格色彩设置之前,亲测依旧生效不会覆盖
这个时候需要先创建样式,并重新指定单元的四条边的样式颜色,即
// 生成工作簿(XSSFWorkbook对应的是xlsx格式的文件,HSSFWorkbook对应的是xls格式的文件)XSSFWorkbook wb = new XSSFWorkbook();// 生成sheetSheet sheet = wb.createSheet();sheet.setDefaultColumnWidth(22);// 工作簿的第一行数据Row row0 = sheet.createRow(0);// 设置单元格边框样式以及颜色CellStyle cellStyle = wb.createCellStyle();// 顶边栏cellStyle.setBorderTop(BorderStyle.THIN);cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());// 右边栏cellStyle.setBorderRight(BorderStyle.THIN);cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());// 底边栏cellStyle.setBorderBottom(BorderStyle.THIN);cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());// 左边栏cellStyle.setBorderLeft(BorderStyle.THIN);cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
POI 单元格设置背景颜色失效(背景色设置方式) 以及背景颜色生效后单元格边框线消失问题解决