我正在尝试写一个巨大的excel文件,我的要求允许我写行并忘记,所以我使用SXSSF,它允许在内存中只保留少量行,其余都写入文档 . 这有助于克服大文件的outofmemory异常 .
但我还需要使用sxssf工作簿将样式设置为单元格 . 我无法在SXSSF中找到定义和使用自定义颜色的方法(比如在XSSF中,我们可以直接定义自定义颜色,在HSSF中我们可以用自定义颜色替换调色板中的条目)
我找不到从SXSSF workbook访问调色板的方法 .
由于构造函数受到保护,我无法创建新的HSSF palette .
现在看来可行的唯一方法是以某种方式从所有预定义颜色的列表中找到相似的颜色并使用它而不是原始颜色(但这需要具有rgb颜色匹配算法,这将是另一项任务)
有人可以建议一个解决方法(或者可能建议一个原始的rgb颜色匹配算法)
2 回答
因此,在通过网络搜索并阅读文档之后,我得到了一个提示,即SXSSF实际上是XSSF的包装器,因此我将SXSSF工作簿返回的CellStyle转换为XSSF,并且能够直接使用XSSFColor生成颜色 .
为了避免对cellStyles进行类型转换的需要,首先使用cellStyles(XSSFCellStyle)创建应用自定义颜色的XSSFWorkbook,然后使用SXSSFWorkbook构造函数将其包装,如下例所示: