PythonのExcelファイル(xls/xlsx)の読み書きモジュールまとめ
仕事で先輩に頼まれて複数シート(年ごと)にまたがるExcelデータ.xlsをCSV2列に並べてほしいと依頼された。PythonでExcelデータを操作するモジュールの存在は知っていたが,使うことがなかった。急遽使うことになった。とりあえず依頼されたことは2-3時間かけて提出できた。
今後も業務においてExcelデータを取り扱うことがあると思うので,PythonでExcelを操作するモジュールについて調査した。
その結果六個のモジュールを見つけた。それぞれのパッケージ名と特徴を箇条書きでまとめた。
- PyOpenXL
- xlsxの読み書きに対応。
- Excelのグラフは1シートにつき1個
- XlsxWriter
- xlsxファイルの書き込みのみ対応。
- 読み込みは無理。
- Excelのグラフの自由がPyOpenXLよりも大きい。1シートに複数こグラフを書いたり位置を指定できる。
- xlrd/xlwt/xlutils
- xls形式に対応。
- xlsx形式への書き込みは未対応。読み込みは対応。
- CalcとかGnumericの形式には書き込める。ただし,こちらの読み込みは無理そう。
- xlutilsは既存ファイルの上書きなどの操作。
- Pyvot
- 利用例があまりない。
- Excelとインタラクティブに相互にデータ操作ができる模様。
- PyXLL
- 日本語の情報はほとんどない。
- PythonでExcel関数を使えるらしい。
- PythonでExcelのマクロをかけるらしい。
- pandas
- 読み書き時に内部でPyOpenXL,xlrd/xlwt,XlsxWriterを使用
- データ構造が簡単で,整っている場合おそらくベスト。
pandasでも読み書きできるけど,あまり構造化されていないようなシートの操作はやりづらいのでやはり大本のモジュールの操作に慣れておいたほうがいい。
調べた限り,以下の2点からxlrd/xlwtとPyOpenXLを使えるようになっておくのがよさそう。
- 汎用性
- 情報の入手しやすさ
最初はどちらの形式でも読み込みができるxlrdを使いこなせればよいと思われる。そこから,xlwt,PyOpenXLと勉強していくのがよさそうだ。
Excelのグラフを要求されるならば,現状はXlsxWriterを使うしかない。こちらは既存のファイルへの追記ができないのが残念だが…。
Excelのグラフを要求されるならば,現状はXlsxWriterを使うしかない。こちらは既存のファイルへの追記ができないのが残念だが…。
参考:
- pythonでオフィス快適化計画 http://www.slideshare.net/KazufumiOhkawa/python-26202075
- Issue 710 – pythonxy – Replace “xlrd” and “xlwt” modules with “xlsxwriter” module. – Scientific-oriented Python Distribution based on Qt and Spyder – Google Project Hosting https://code.google.com/p/pythonxy/issues/detail?id=710
- Python – Best Module to write into XLS files – Stack Overflow http://stackoverflow.com/questions/6825300/python-best-module-to-write-into-xls-files