我正在编写一个程序,该程序应该使用属性模板来制作带有填充为橙色,给定文本和给定边框的一些单元格的Excel电子表格.我已经成功地在HSSF中编写了用于执行此操作的代码,但是我现在正在使用XSSF,并且无法使其正常工作.
发生的是单元格被正确的橙色填充,文本也正确地进入了单元格,但是应用PropertyTemplate会使橙色单元格变为黑色.有谁知道解决这个问题的方法吗?
这是我的代码.
XSSFCellStyle orangeFillStyle = wb.createCellStyle();
orangeFillStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 192, 0)));
orangeFillStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
然后有一大堆代码/算法来找出哪些单元格要填充橙色,哪些单元格要输入文本.我使用以下代码突出显示单元格:
currCell.setCellStyle(orangeFillStyle);
工作表创建的最后是PropertyTemplate(边界)代码:
BorderStyle dividerStyle = BorderStyle.THIN;
PropertyTemplate borderTemplate = new PropertyTemplate();
borderTemplate.drawBorders(new CellRangeAddress(0, 0, 0, 13), dividerStyle, BorderExtent.BOTTOM);
borderTemplate.drawBorders(new CellRangeAddress(0, 0, 1, 13), dividerStyle, BorderExtent.TOP);
borderTemplate.drawBorders(new CellRangeAddress(0, rowI, 1, 13), dividerStyle, BorderExtent.VERTICAL);
borderTemplate.drawBorders(new CellRangeAddress(rowI, rowI, 0, 13), dividerStyle, BorderTextent.BOTTOM);
borderTemplate.applyBorders(sheet);
如果我注释掉borderTemplate.applyBorders(sheet);线,填充颜色看起来很好.显然,如果这样做,我的工作表上没有任何边框.就像我不能同时具有自定义填充颜色和边框一样.有谁知道为什么会这样或如何解决?
我会注意到,如果我使用IndexedColor而不是自定义颜色,则填充和边框就可以了.唯一的问题是我不喜欢任何索引颜色.这是我用于IndexedColor的代码:
XSSFCellStyle orangeFillStyle = wb.createCellStyle();
orangeFillStyle.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
orangeFillStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);