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(否则可能会导致性能问题并达到允许的样式限制)。