Java POI Excel合并导致“;修复的记录:格式来自/xl/styles.xml部分(样式)";

Java POI Excel合并导致“;修复的记录:格式来自/xl/styles.xml部分(样式)";,java,excel,jakarta-ee,apache-poi,Java,Excel,Jakarta Ee,Apache Poi,我使用这里指定的代码合并了两个excel文件 这是为我的合并单元格应用样式的块 if (styleMap != null) { if (oldCell.getSheet().getWorkbook() == newCell.getSheet().getWorkbook()) { newCell.setCellStyle(oldCell.getCellStyle()); } else { int stHashCode = oldCell.getCellSty

我使用这里指定的代码合并了两个excel文件

这是为我的合并单元格应用样式的块

 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);
  }
}
这一切都按预期进行,并且在生成XSSF工作簿时运行良好

尝试打开时出现问题:

我看到下面的错误

我的错误报告包含以下内容

    <?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>

error072840_01.xml
在文件“XYZ.xlsx”中检测到错误
修复的记录:格式来自/xl/styles.xml部分(样式)
在所有这些之后,我的床单打开得很好,但没有样式。我知道要创建的样式数量是有限制的,并且已经计算了正在创建的样式,我几乎看不到创建了4个。我甚至知道这个问题的风格太多了

不幸的是,POI仅支持优化HSSF工作手册()


任何关于如何缓解此问题的帮助都将非常有用。

好吧,在调试了一些POI代码以及如何应用样式等之后

下面的操作解决了问题

newCellStyle.getCoreXf().unsetBorderId();
      newCellStyle.getCoreXf().unsetFillId();
我也有同样的问题。 您应该尽量减少样式和字体的实例,因为每个实例都放在
xl/styles.xml


一本书只制作一次样式和字体。

我在使用带有Pandas的Python库xlxswriter时也遇到了同样的问题。在我停止尝试使用Pandas的date_格式规范后,我停止了错误

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()

您是否确保使用的是最新版本?(写作时为3.11 beta 2)是的,我试过使用3.11 beta 2,但仍然看到同样的问题。早些时候我在3.9上,我认为我没有多种风格。。我每本书只有一本。上面提到的解决方案效果很好。虽然Shivs问题与工作簿上创建的样式总数无关,但这可能是由它引起的,对我来说,这正是发生的情况,您可以在工作簿中创建的样式的最大上限约为50k到60k。我想说,这不是同一个问题,只是类似的症状(这在很多Excel错误中都很常见)。在pandas示例中,这可能是由日期格式
'%m/%d/%Y'
造成的,该格式在Excel中无效。请尝试类似
'mm/dd/yy'
的操作。我来问一下,在更新这些代码之前,您有什么经验?