处理Excel文档中的无效XML属性

时间:2018-11-02 17:37:58

标签: excel openpyxl

我正在使用openpyxl读取Excel文档。由于我完全不了解的原因,在存储电子表格的ZIP存档中的xl / styles.xml中,两个单元格样式名称中都有一个ctrl-d:

public AssociateMapper{
  Predicate<Status> status = (sts) -> null != sts &&null!=sts.getStatusType                                          
                                       && "O|A|P".contains(sts.getStatusType());    
 @Mappings({
            //some mappings   
          @Mapping(target = "statuses", expression = "java(associate.getStatuses().stream().filter(status).collect(Collectors.toList()))" )
          })
          Associate mapAssociate(Associate associate);
}

(两个名称中都是ctrl-D。)Openpyxl的<cellStyle name="^D" xfId="20" builtinId="53" customBuiltin="true"/> <cellStyle name="^D 2" xfId="21" builtinId="53" customBuiltin="true"/> 函数在一定程度上扼杀了以下错误:

load_workbook

我考虑过的方法:

  • 预处理并替换styles.xml
  • 完全忽略样式
  • 在oocalc(或Excel)中手动删除单元格样式

有什么想法/建议吗?

1 个答案:

答案 0 :(得分:0)

拍摄任何人或任何人生成文件,因为这是无效的XML! ;-)向上游提交错误。

如果您可以在MS Excel中对其进行清理,那将很容易,否则您可以使用openpyxl的代码编写自己的预处理器:styles/stylesheet.py将使您无需担心名称空间就可以阅读源代码,但是否则应该能够就地更改元素。样式表几乎从来没有那么大(某些库的确会产生大量带有垃圾的库)。