f

2014-05-12

PythonのExcelファイル(xls/xlsx)の読み書きモジュールまとめ

仕事で先輩に頼まれて複数シート(年ごと)にまたがるExcelデータ.xlsCSV2列に並べてほしいと依頼された。PythonExcelデータを操作するモジュールの存在は知っていたが,使うことがなかった。急遽使うことになった。とりあえず依頼されたことは2-3時間かけて提出できた。
今後も業務においてExcelデータを取り扱うことがあると思うので,PythonExcelを操作するモジュールについて調査した。
その結果六個のモジュールを見つけた。それぞれのパッケージ名と特徴を箇条書きでまとめた。


  • PyOpenXL
    • xlsxの読み書きに対応。
    • Excelのグラフは1シートにつき1個
  • XlsxWriter
    • xlsxファイルの書き込みのみ対応。
    • 読み込みは無理。
    • Excelのグラフの自由がPyOpenXLよりも大きい。1シートに複数こグラフを書いたり位置を指定できる。
  • xlrd/xlwt/xlutils
    • xls形式に対応。
    • xlsx形式への書き込みは未対応読み込みは対応
    • CalcとかGnumericの形式には書き込める。ただし,こちらの読み込みは無理そう。
    • xlutils既存ファイルの上書きなどの操作。
  • Pyvot
    • 利用例があまりない。
    • Excelとインタラクティブに相互にデータ操作ができる模様。
  • PyXLL
    • 日本語の情報はほとんどない。
    • PythonExcel関数を使えるらしい。
    • PythonExcelのマクロをかけるらしい。
  • pandas
    • 読み書き時に内部でPyOpenXLxlrd/xlwtXlsxWriterを使用
    • データ構造が簡単で,整っている場合おそらくベスト。


pandasでも読み書きできるけど,あまり構造化されていないようなシートの操作はやりづらいのでやはり大本のモジュールの操作に慣れておいたほうがいい。
調べた限り,以下の2点からxlrd/xlwtPyOpenXLを使えるようになっておくのがよさそう。
  • 汎用性
  • 情報の入手しやすさ
最初はどちらの形式でも読み込みができるxlrdを使いこなせればよいと思われる。そこから,xlwtPyOpenXLと勉強していくのがよさそうだ。
Excelのグラフを要求されるならば,現状はXlsxWriterを使うしかない。こちらは既存のファイルへの追記ができないのが残念だが...。

参考:



0 件のコメント:

コメントを投稿