java - 将自定义颜色与 SXSSF (Apache POI) 结合使用

标签 java excel apache-poi

我正在尝试编写一个巨大的 excel 文件,我的要求允许我写下行然后忘记,所以我正在使用 SXSSF这只允许在内存中保留少数行,其余的都写入文档。这有助于克服大文件的内存不足异常。

但我还需要使用 sxssf 工作簿为单元格设置样式。我找不到在 SXSSF 中定义和使用自定义颜色的方法(就像在 XSSF 中,我们可以直接定义自定义颜色,而在 HSSF 中,我们可以用自定义颜色替换调色板中的条目)

我找不到从 SXSSF workbook 访问调色板的方法.

我无法创建新的 HSSF palette因为构造函数是 protected 。

目前唯一可行的方法是以某种方式从所有预定义颜色的列表中找到相似的颜色并使用它,而不是原来的颜色(但这需要有一个 rgb 颜色匹配算法,这将是另一项任务)

有人可以建议解决方法(或者可能建议原始 rgb 颜色匹配算法)

最佳答案

所以,在网上搜索和阅读文档后,我得到一个提示,即 SXSSF 实际上是 XSSF 的包装器,所以我将 SXSSF 工作簿返回的 CellStyle 类型转换为 XSSF,并且能够直接使用 XSSFColor生成颜色。

SXSSFWorkbook workbook = new SXSSFWorkbook(50); 
Sheet sheet = workbook.createSheet("Image Data"); 
....
Cell cell = row.createCell(j);
cell.setCellValue(j);
XSSFCellStyle cs1 = (XSSFCellStyle) workbook.createCellStyle();
cs1.setFillForegroundColor(new XSSFColor(new java.awt.Color(red,green,blue)));          
cs1.setFillPattern(CellStyle.SOLID_FOREGROUND);
cell.setCellStyle(cs1);

关于java - 将自定义颜色与 SXSSF (Apache POI) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561710/

相关文章:

java - 删除ArrayList中的特定数字

c# - 使用C#复制excel中的单元格

vba - With 语句中的多个对象

java - Apache POI,处理 WorkbookFactory.create() 异常以获得更好的用户体验

java - 循环在列表循环内创建行

java - 如何在JAVA类中填充数组

java - 这是否违反了德墨忒尔法则?与可读代码

java - 有没有为不同供应商定制不同 View 的框架?

excel - 最快的矩阵逆Excel VBA

java - 我应该如何使用poi将word文档中的字符串替换为另一个字符串?