无法在XSSFCell中设置自定义颜色Apache POI
我想设置一些自定义(从十六进制或RGB值)颜色到一个xssfcell.But单元格的颜色变成黑色,即使我给一些其他颜色。我试图通过以下方式这样做:无法在XSSFCell中设置自定义颜色Apache POI
File xlSheet = new File("C:\\Users\\IBM_ADMIN\\Downloads\\Excel Test\\Something3.xlsx"); System.out.println(xlSheet.createNewFile());
FileOutputStream fileOutISPR = new FileOutputStream("C:\\Users\\IBM_ADMIN\\Downloads\\Excel Test\\Something3.xlsx");
XSSFWorkbook isprWorkbook = new XSSFWorkbook();
XSSFSheet sheet = isprWorkbook.createSheet("TEST");
XSSFRow row = sheet.createRow(0);
XSSFCellStyle cellStyle = isprWorkbook.createCellStyle();
byte[] rgb = new byte[3];
rgb[0] = (byte) 24; // red
rgb[1] = (byte) 22; // green
rgb[2] = (byte) 219; // blue
XSSFColor myColor = new XSSFColor(rbg);
cellStyle.setFillForegroundColor(myColor);
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
XSSFCell cell = row.createCell(0);
cell.setCellValue("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has");
cell.setCellStyle(cellStyle);
CellRangeAddress rangeAddress = new CellRangeAddress(0, 0, 0, 2);
sheet.addMergedRegion(rangeAddress);
int width = ((int)(90 * 0.73)) * 256;
sheet.setColumnWidth(cell.getColumnIndex(), width);
//sheet.autoSizeColumn(cell.getColumnIndex());
RegionUtil.setBorderBottom(XSSFCellStyle.BORDER_MEDIUM, rangeAddress, sheet, isprWorkbook);
RegionUtil.setBottomBorderColor(IndexedColors.RED.getIndex(), rangeAddress, sheet, isprWorkbook);
XSSFCell cell2 = row.createCell(11);
cell2.setCellValue("222222222222222");
isprWorkbook.write(fileOutISPR);
// END程序
XSSFCellStyle cellStyle = isprWorkbook.createCellStyle(); byte[] rgb = new byte[3];
rgb[0] = (byte) 24; // red
rgb[1] = (byte) 22; // green
rgb[2] = (byte) 219; // blue
XSSFColor myColor = new XSSFColor(rgb);
cellStyle.setFillForegroundColor(myColor);//1st method
//cellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 0, 128)));//2nd method
//XSSFColor myColor = new XSSFColor(Color.decode("0XFFFFFF"));
cellStyle.setFillForegroundColor(myColor);//3rd Method
我试图在回答有关问题提到的其他许多方面,但这些都不解决我的问题。 请帮我一把。
回答:
这是由Package org.apache.poi.ss.util的不完整引起的。
PropertyTemplate
以及CellUtil
和RegionUtil
是仅基于而不是xssf.usermodel
水平ss.usermodel
水平。但是org.apache.poi.ss.usermodel.CellStyle直到现在还不知道setFillForegroundColor(Color color)
。它只知道setFillForegroundColor(short bg)
。所以ss.usermodel
级别根本无法将Color
设置为填充前景色。只有short
(颜色索引)是可能的。
如果谈到为什么只需要使用org.apache.poi.ss.util
设置边框来设置颜色的必要性,那么答案就是必要的,因为颜色和边框都在同一个CellStyle
中。这就是为什么当将边框设置添加到CellStyle
时,颜色设置必须保持并最终设置为新的。
所以总而言之,没有办法摆脱这种困境。如果您需要使用org.apache.poi.ss.util
,则不能同时使用。唯一的希望是setFillForegroundColor(Color color)
将在apache poi
的更高版本中添加到org.apache.poi.ss.usermodel.CellStyle
。
以上是 无法在XSSFCell中设置自定义颜色Apache POI 的全部内容, 来源链接: utcz.com/qa/265621.html