Apache POI和颜色
我有一些与Apache POI的问题,一些帮助将是不错的!
我想删除Excel工作表的子部分中的颜色。 要做到这一点,我尝试的第一件事就是渲染要清理的单元格(比方说只有第一行),并将它们的颜色设置为白色:
cell.getCellStyle().setFillForegroundColor(IndexedColors.WHITE.index);
但是,如果我这样做,一些没有渲染的细胞(比如说第二行)的颜色也会变成白色的细胞。 这很奇怪,因为被改变的单元格没有相同的前景色,所以我认为它们会有不同的风格。
所以我试了另一种方式:
CellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(IndexedColors.WHITE.index); cell.setCellStyle(style);
这个想法是为了避免改变Excel工作表中不同单元格可能共有的样式。 其实,它解决了颜色问题,但如果我这样做,我放松了Excel工作表中的不同风格,而我只想删除一些颜色…
我正在使用一个通用的工作簿,我正在阅读一个xlsx(与xls相同的问题)你知道该怎么做吗? 很多,问候,
如果你想删除颜色,那么将填充图案改为NO_FILL
可能是有意义的,而不是将颜色设置为白色,如下所示:
style.setFillPattern(CellStyle.NO_FILL)
回到你的主要问题,你有两个select处理单元格样式修改:
- 通过修改样式通过
CellUtil.setCellStyleProperty
方法
CellUtil.setCellStyleProperty(cell, workbook, CellUtil.FILL_PATTERN, CellStyle.NO_FILL)
- 通过克隆现有样式的样式并修改属性
示例代码如下所示:
CellStyle oldStyle = cell.getCellStyle(); CellStyle newStyle = workbook.createCellStyle(); newStyle.cloneStyleFrom(oldStyle); newStyle.setFillPattern(CellStyle.NO_FILL); cell.setCellStyle(newStyle);
然而,在第二种情况下,您将为每个单元格创build一种新的单元格样式,您可能会考虑重新使用一些已更新的单元格样式并实现某种caching(否则可能会导致性能问题并达到允许的样式限制)。