我已经能够使用 xlrd 使用列号和行号作为输入来读取 Excel 单元格值。现在我需要访问一些以 .ods 格式保存的电子表格中的相同单元格值。
例如,我如何使用 Python 读取 .ods 文件中单元格 E10 中存储的值?
破解 XML应该不会太难……但也有一些复杂的情况。仅举一个例子:OOo 以他们的智慧决定不显式地写入单元格地址。没有像address="E10"or这样的单元格属性column="E"的单元格属性;你需要计算行和列。
五个连续的空单元格表示为
<table:table-cell table:number-columns-repeated="5" />
这number-colums-repeated属性默认为“1”,也适用于非空单元格。
当你合并单元格时,情况会变得更糟;你会得到一个covered-table-cell与标签90%相同的标签table-cell,并且属性number-columns-spanned和number-rows-spanned计算在列和行计数中。
一个table:table-row标签可能有一个number-rows-repeated属性。这可用于重复整个非空行的内容,但最常见于有超过 1 个连续空行时。
因此,即使您对“适用于我的数据”方法感到满意,但这也不是微不足道的。
您可能想看看ODFpy。请注意第二句话:“”“与其他更方便的 API 不同,这个 API 本质上是 XML 格式之上的一个抽象层。”“” 有一个 ODF 到 HTML 脚本(如果它是为 ODS 编写的)对于ODT)可能会被黑客攻击以获得您想要的东西。
如果您更喜欢“适用于几乎每个人的数据并受到支持并具有您熟悉的界面”的方法,您可能需要等到该功能投入使用xlrd......但这不会很快发生。