OpenOffice Calc.odsファイルからセルの値をどのように読みますか?
質問
入力として列数と行番号を使用してXLRDを使用してExcelセル値を読むことができました。次に、.ods形式で保存されたいくつかのスプレッドシートで同じセル値にアクセスする必要があります。
たとえば、.odsファイルにセルE10に保存されている値をPythonでどのように読み取りますか?
解決
XMLを通過する方法をハッキングします すべきではありません 難しすぎて...しかし合併症があります。ほんの一例:彼らの知恵のooooは、セルアドレスを明示的に書かないことにしました。次のようなセル属性はありません address="E10"
また column="E"
;行と列をカウントする必要があります。
5つの連続した空のセルが代表されています
<table:table-cell table:number-columns-repeated="5" />
number-colums-repeated
属性はデフォルトで「1」であり、空の非セルにも適用されます。
細胞をマージした場合、悪化します。あなたは covered-table-cell
90%と同じタグ table-cell
タグ、および属性 number-columns-spanned
と number-rows-spanned
列と行数に計算する必要があります。
a table:table-row
タグにはaがあります number-rows-repeated
属性。これを使用して、空ではない列全体の内容を繰り返すことができますが、1回以上の空の行がある場合に最もよく見られます。
したがって、たとえ「私のデータの動作」アプローチに満足していても、それは些細なことではありません。
あなたは見たいかもしれません odfpy. 。 2番目の文に注意してください: "" "他のより便利な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 5月 静かに偽のデータを返します.