我在使用 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)
回到您的主要问题,您有两种处理单元格样式修改的选项:
- 通过修改样式
CellUtil.setCellStyleProperty
method
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);
然而,在第二种情况下,您将为每个单元格创建一个新的单元格样式,并且您可能会考虑重用一些已经更新的单元格样式并实现某种缓存(否则可能会导致性能问题并达到允许的样式)限制)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)