2011-01-20 31 views
11

私はPythonに取り組んでいます。* .odsファイルを読み込み、それをPython辞書に変換したいと思います。スプレッドシートからPython辞書への変換

キーは最初の列の値になり、値は2番目の列の値になります。

どうすればいいですか? xlrdを使用しましたが、* .odsファイルは表示されません。

+3

http://pypi.python.org/pypi/ezodfまたはhttp://udk.openoffice.org/python/python-bridge.html – marcog

+0

@marcog:このコメントは回答になるはずです。 –

+1

@Space私は本当に多くのことを読んでいない可能性を指摘していたので、完全な答えだとは思わない。 – marcog

答えて

2

最初に.ODSをCSVに変換できますか?次に、csvモジュールを使用して、Pythonを使用してCSVを解析するのは簡単です。

+0

ありがとう、しかし、私はそこにcvsにodsを変換するための唯一の方法があることを知っているとして、オープンオフィスサービスです。しかし、私はそれを使いたくない。 –

1

Pythonでodsを読む方法については、Linux Journalに素晴らしい記事があります。 ODSファイルは、内部にxmlファイルを含むjuz zipファイルです。 XMLファイルを解析してすべてのセルを読み取ることはできません。

http://www.linuxjournal.com/article/9347?page=0,2

+3

"ods in pythonを読み込む方法"は、可能性のある興味深いタグのサブセットを要約するだけです。 ''について言及していますが、その奇妙な内容については何の手がかりも与えておらず、セルが何であるか(行、列)を把握するために非常に慎重な書庫管理をしなければならないto(セルの属性には記録されていません!!)。 XMLファイルを正しく解析することは、そのような質問に答えるためにはっきりと提案するべきものではありません。あなた自身でこれを試しましたか?テストファイルをオフラインで送ってもらえますか? –

4

いくつかの利用可能なオプション:

  • pyexcel-ods: "ODS形式でデータを読み取り、操作し、書き込みにラッパーライブラリ。" 経由でインストールすることができます:pip install pyexcel-ods。私は個人的にこのパッケージをお勧めします私はそれを使用しており、積極的に維持されています。

  • py-odftools:「... ISO標準のOpenDocument形式でファイルを、分析変換し、作成するためのツールのコレクションが。」 このプロジェクトは、それが放棄見える2007年後半以降に更新されていません。

  • ezodf

    : "OpenDocumentFormatファイルを作成/操作するA Pythonパッケージ。" pip install ezodf経由でインストール可能。このパッケージの深刻な問題については、以下のコメントの注意を参照してください。

+0

注意:最後のパッケージ([ezodf](https://pypi.python.org/pypi/ezodf))には、間違ったセル値を黙って返す重大なバグがあります:https://github.com/T0ha/ezodf/issues/12。それを私の注意を引くためにありがとう[Mateusz](http://stackoverflow.com/users/4130619/mateusz-konieczny)。 – Gabriel

3

ユーザーに[ファイル]> [名前を付けて保存]を尋ねることはできますが、これはご使用の状況には適していません。

libre/openofficeサービスを使用する方が簡単でしょう。 X11をインストールしたり実行したりすることなく、サーバー上で完全にヘッドレスで実行できます。これにより、きれいなネイティブ変換が可能になります。

libreoffice --without-x --convert-to csv filename.ods 

詳細はLibreOfficeの--help(またはOpenOfficeの--help)を確認してください。これはos.system()、subprocess。*()などでラップすることもできます(注:Windowsでは-convert-toを使用してください)インスタンスのLibre/Open/Starオフィス、クイックスターターを含む。

アップデート:以前のバージョンのLibreOfficeでは--without-xの代わりに--headlessを使用していました。

+0

注:自動操作には--headlessが必要です。 –

+0

(私は確かに個々のシートを指定する方法を知りたいです) –

+0

X11ライブラリがリンクされていなくても、ヘッドレスビルドを行う方法は次のとおりです:https://wiki.documentfoundation.org/Development/HeadlessBuild –

関連する問題