我使用此处指定的代码合并了两个excel文件
http://www.coderanch.com/t/614715/Web-Services/java/merge-excel-files
这个块应用我的合并单元格的样式
if (styleMap != null)
{
if (oldCell.getSheet().getWorkbook() == newCell.getSheet().getWorkbook())
{
newCell.setCellStyle(oldCell.getCellStyle());
}
else
{
int stHashCode = oldCell.getCellStyle().hashCode();
XSSFCellStyle newCellStyle = styleMap.get(stHashCode);
if (newCellStyle == null)
{
newCellStyle = newCell.getSheet().getWorkbook().createCellStyle();
newCellStyle.cloneStyleFrom(oldCell.getCellStyle());
styleMap.put(stHashCode, newCellStyle);
}
newCell.setCellStyle(newCellStyle);
}
}
这一切都按预期工作,并在生成我的XSSFWorkbook方面做得很好 .
我尝试打开时出现问题:
我看到下面的错误
我的错误报告包含在下面
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<logFileName>error072840_01.xml</logFileName>
<summary>Errors were detected in file 'XYZ.xlsx'</summary>
<repairedRecords summary="Following is a list of repairs:">
<repairedRecord>Repaired Records: Format from /xl/styles.xml part (Styles)</repairedRecord>
</repairedRecords>
</recoveryLog>
毕竟这些我的表单打开很好,但没有样式 . 我知道要创建的样式数量有限制,并且已经计算了正在创建的样式,我几乎看不到创建的样式 . 我甚至知道这个问题的风格太多了 .
不幸的是,POI支持仅优化HSSFWorkbook(Apache POI delete CellStyle from workbook)
如何缓解这个问题的任何帮助都会很棒 .
3 回答
那么,在调试了POI代码的位以及如何应用样式之后 .
以下做了解决问题
我使用Python库xlxswriter与Pandas有同样的问题 . 在我停止尝试使用Pandas的date_format规范后,我停止了错误 .
我遇到过同样的问题 . 您应该最小化样式和字体的实例,因为每个实例都放在
xl/styles.xml
中只为一本书制作一次样式和字体 .