excel - 处理 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
我考虑过的方法:
- 预处理和替换styles.xml
- 以某种方式完全忽略样式
- 手动删除 oocalc(或 Excel)中的单元格样式
有什么想法/建议吗?
解决方案
拍摄生成文件的任何人或任何东西,因为这是无效的 XML!;-) 向上游提交错误。
如果您可以在 MS Excel 中清理它,那么这将更容易,否则您可以使用 openpyxl 的代码编写自己的预处理器:styles/stylesheet.py
将让您阅读源代码而不必担心命名空间,否则您应该能够就地更改元素。样式表几乎从来没有那么大(一些库确实会产生一些带有垃圾的大型样式表)。
推荐阅读
- bash - 点源脚本时bash无法解析脚本路径
- javascript - React Native Navigation 中的堆叠导航器
- c++ - 将 char[] 添加到动态数组并从函数中释放
- windows - 找出哪个进程正在锁定 Windows 中的文件或文件夹
- java - 防止 Spring Boot 调度程序关闭中的线程中断
- java - 根据Java中的值拆分字符串列表
- python - 如何更好地计算一个列表在另一个列表中的出现次数,然后使用 count 列出每个元素的结果
- javascript - 如何安全地将数据从后端发送到前端
- angular - 获取用户数据时出现未经身份验证的错误
- vim - vim 窗口的唯一标识符