我已经能够使用列和行号作为输入读取XLRD的Excel单元格值。现在,我需要在某些以.ods格式保存的电子表格中访问相同的单元格值。

因此,例如,如何使用Python读取.ods文件中的单元格E10中存储的值?

有帮助吗?

解决方案

通过XML入侵 不应该 太难了...但是有并发症。只是一个例子:OOO以他们的智慧决定不明确编写单元格地址。没有类似的单元格属性 address="E10" 或者 column="E";您需要计算行和列。

五个连续的空细胞由
<table:table-cell table:number-columns-repeated="5" />

number-colums-repeated 属性默认为“ 1”,也适用于非空单元。

当您合并细胞时会变得更糟。你得到一个 covered-table-cell 标签90%与 table-cell 标签和属性 number-columns-spannednumber-rows-spanned 需要将其弄入列和行计数。

一种 table:table-row 标签可能有一个 number-rows-repeated 属性。这可以用来重复整个非空行的内容,但是当连续1个以上的空行时,通常会出现。

因此,即使您对“对我的数据的作品”感到满意,也不是微不足道的。

您可能想看 odfpy. 。请注意第二句:“”“与其他更方便的API不同,该句子本质上是XML格式上方的抽象层。对于ODT)可能可以砍掉您想要的东西。

如果您喜欢“几乎所有人的数据,并且受到支持并具有您熟悉的接口”,则可能需要等到将功能放入中 xlrd ...但这不会很快发生。

其他提示

来自我尝试的图书馆 ezodf 是工作的人。

from ezodf import opendoc, Sheet
doc = opendoc('test.ods')
for sheet in doc.sheets:
   print sheet.name
   cell = sheet['E10']
   print cell.value
   print cell.value_type

pyexcel-ods 坠毁, ,odfpy 坠毁 此外,它的文档要么缺少或可怕。

鉴于据说有效的库死在我测试的第一个文件中,我希望避免写自己的处理,或者迟早会崩溃,或者在某些怪异的情况下默默失败的情况更糟。

编辑:情况变得更糟。 Ezodf可能 默默返回虚假数据.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top