java - Apache Poi 如何检测模板颜色?
问题描述
我需要将所有内容从 a 复制XSSFWorkbook
到 a SXSSFWorkbook
,因为XSSFWorkbook
由于OutOfMemoryException
.
为此,我整天都在网上搜索在工作簿之间复制工作表而不会丢失任何格式、样式等的最有效方法。我使用这个论坛线程来创建我自己的 util 类工作,使用上面提到的 excel 版本。
到目前为止,它复制了所有必要的东西,只是有点打嗝。在原始文件的一张纸上,单元格背景在Theme Colors
. 这会导致新文件实际显示的颜色与其应有的颜色不同。
新的颜色:
另外,如果您不知道我的意思Theme Colors
(我刚刚意识到两种颜色都在同一个位置):
这是我用来复制的代码CellStyles
:
int styleHashCode = oldCell.getCellStyle().hashCode();
CellStyle newCellStyle = styleMap.get(styleHashCode);
if (newCellStyle == null) {
newCellStyle = newCell.getSheet().getWorkbook().createCellStyle();
newCellStyle.cloneStyleFrom(oldCell.getCellStyle());
styleMap.put(styleHashCode, newCellStyle);
}
newCell.setCellStyle(newCellStyle);
截至目前,这会导致打嗝。由于我刚刚发现了导致此问题的原因,因此我没有太多时间来测试我自己关于如何解决此问题的所有想法,但我会感谢此问题存在的每一个提示/解决方案。
所以总结一下:
如何复制中Theme Colors
使用的颜色CellStyles
?
请注意,我可以很容易地用 RGB 值复制颜色,问题在于Template Colors
.
编辑:我刚刚发现调用ThemesTable.inheritFromThemeAsRequired(XSSFColor color)
似乎导致了我的问题。但是我还没有找到任何方法来取消设置工作簿的主题。
解决方案
推荐阅读
- node.js - 如何使用云功能更新收藏?
- docker - Docker 使用静态 html 文件运行容器
- apache - 如何仅禁用 webP 优化
- python - 如何找到与给定数字不相邻的列表中的数字总和?
- django - 是否可以为要用于实际模型的抽象模型定义视图和模板?
- javascript - 存储在 Firestore 中的 Date 对象的行为将发生变化,您的应用可能会中断
- .net - NUnit3 找不到程序集“FSharp.Core 4.4.1.0” - 未用于项目的其余部分
- javascript - 用 str.replace() 匹配多个数字
- ruby-on-rails - 升级到 RoR 5 时,不存储序列化为数组的现有数据
- python - 如何操作在字幕中通过字符串传递的变量的属性?