我正在编写一个程序,该程序应该制作一个 Excel 电子表格,其中一些单元格填充为橙色,给定文本,并使用PropertyTemplate
。我已经成功编写了在 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);