POI Excel合并导致“修复logging:从/xl/styles.xml部分(样式)格式”

我已经使用这里指定的代码合并了两个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> 

在所有这些我的表打开罚款,但没有风格。 我知道创build的样式数量有限制,并且已经计算了创build的样式,我几乎看不到创build的样式。 我甚至知道这个问题的风格太多了。

不幸的是,POI支持只优化HSSFWorkbook( Apache POI从工作簿删除CellStyle )

如何缓解这个问题的任何帮助将是伟大的。

那么,在debuggingPOI代码的位后,如何应用样式等等。

做下面解决了这个问题

 newCellStyle.getCoreXf().unsetBorderId(); newCellStyle.getCoreXf().unsetFillId(); 

我遇到过同样的问题。 您应该尽量减less样式和字体的实例,因为每个实例都放置在xl/styles.xml

为一本书只做一次样式和字体。

使用Python库xlxswriter和Pandas时遇到了同样的问题。 在我停止尝试使用pandas的date_format规范后,我停止了这个错误。

 import pandas as pd data = pd.read_excel('somefile.xlsx') grp = data.groupby('Property Manager') for i, (pm, g) in enumerate(grp): writer = pd.ExcelWriter(p + f.format(pm[:30]), engine='xlsxwriter') #,date_format='%m/%d/%Y') g[cols].to_excel(writer, sheet_name='Summary', index=False) writer.save()