当前位置: 首页 > 知识库问答 >
问题:

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

邵修诚
2023-03-14

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

在所有这些之后,我的床单打开得很好,但没有样式。我知道要创建的样式数量是有限制的,并且已经计算了正在创建的样式,我几乎看不到创建了4个。我甚至知道这个问题的风格太多了。

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

任何关于如何缓解该问题的帮助都将是巨大的。

共有3个答案

包子航
2023-03-14

我在使用Python库xlxswriter和Pandas时也遇到了同样的问题。在我停止尝试使用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()
锺离飞飙
2023-03-14

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

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

康恩
2023-03-14

嗯,在调试了一段POI代码之后,以及样式是如何应用的等等。

下面的操作解决了问题

newCellStyle.getCoreXf().unsetBorderId();
      newCellStyle.getCoreXf().unsetFillId();
 类似资料:
  • 我试图将标题行格式添加到我的OpenXML电子表格文档中,但出现了上述错误。我很确定这与我如何添加样式有关,但我不知道我做错了什么。 在我尝试添加样式之前,文档打开正确。 非常感谢您的帮助。 当我打开它时,它会提示修复它,并且它会正确地进行修复。然而,如果我在记事本上打开它,我会得到一些疯狂的东西。 以下是代码的其余部分,以供参考:

  • 在执行结束后,当我使用Ms-excel-2007打开处理过的文件(.xlsx文件)时,我一直在处理excel表格中的突出显示单元格。我面临两个弹出窗口。此处显示指定的代码和图像:

  • 合并 在执行pull之后,进行下一次push之前,如果其他人进行了推送内容到远程数据库的话,那么你的push将被拒绝。 这种情况下,在读取别人push的变更并进行合并操作之前,你的push都将被拒绝。这是因为,如果不进行合并就试图覆盖已有的变更记录的话,其他人push的变更(图中的提交C)就会丢失。 合并的时候,Git会自动合并已有的变更点!不过,也存在不能自动合并的情况。在下一个页面,我们会为大

  • 我正在使用Python 3.8.8和包含的日志库。要在Python中使用通用字符串格式,我还想使用记录新的格式字符串变体。我还想使用日志字符串的延迟评估(因此没有或)。 根据这篇关于pylint的堆栈溢出帖子(因此pylint日志格式样式=new),以下变体应该可以工作。但是,日志记录中有一个异常。信息。 最后一行的例外情况如下: 我从异常消息推断,日志记录仍然需要使用旧式格式,即。 如何在登录P

  • table单元格选中,存在合并的单元格时,选中样式和期望的不一样,如何解决这个问题? 不存在单元格合并时不存在这个问题: 存在单元格合并时: 想要的是这种 目前合并实现方案,是获取起始点击的单元格坐标,为选中的每一个单元格坐标添加选中样式。 有无好的解决办法?

  • 我只能导入/配置类路径导入顺序的设置吗?