首页 > 解决方案 > 处理 Excel 文档中的无效 XML 属性

问题描述

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

<cellStyle name="^D" xfId="20" builtinId="53" customBuiltin="true"/>
<cellStyle name="^D 2" xfId="21" builtinId="53" customBuiltin="true"/>

(这两个名称都是 ctrl-D。)Openpyxl 的load_workbook函数相当合理地因以下错误而窒息:

lxml.etree.XMLSyntaxError: invalid character in attribute value, line 2, column 11879

我考虑过的方法:

有什么想法/建议吗?

标签: excelopenpyxl

解决方案


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

如果您可以在 MS Excel 中清理它,那么这将更容易,否则您可以使用 openpyxl 的代码编写自己的预处理器:styles/stylesheet.py将让您阅读源代码而不必担心命名空间,否则您应该能够就地更改元素。样式表几乎从来没有那么大(一些库确实会产生一些带有垃圾的大型样式表)。


推荐阅读