首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POI Excel合并导致“修复的记录: Format from /xl/styles.xml part (Styles)”

POI Excel合并导致“修复的记录: Format from /xl/styles.xml part (Styles)”
EN

Stack Overflow用户
提问于 2014-09-17 09:38:05
回答 3查看 10.8K关注 0票数 6

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

http://www.coderanch.com/t/614715/Web-Services/java/merge-excel-files

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

代码语言:javascript
复制
 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时进行得很顺利。

当我尝试打开它时出现问题:

我看到下面的错误

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

代码语言:javascript
复制
    <?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仅支持优化HSSFWorkbook (Apache POI delete CellStyle from workbook)

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-24 06:57:51

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

下面的操作解决了这个问题

代码语言:javascript
复制
newCellStyle.getCoreXf().unsetBorderId();
      newCellStyle.getCoreXf().unsetFillId();
票数 3
EN

Stack Overflow用户

发布于 2015-09-24 16:00:30

我也有同样的问题。您应该最小化样式和字体的实例,因为每个实例都放置在xl/styles.xml

一本书只设置一次样式和字体。

票数 2
EN

Stack Overflow用户

发布于 2016-03-30 02:10:14

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

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25880954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档