PythonでExcelからデータを読み込む
Excelでの単純作業を効率化するために普通の人はVBAを使うんでしょうけども、残念ながら私はVB系がからっきしでマクロなんか書いたことがありません。そんな私でもJavascriptにはお世話になっていたので、WindowsのJScriptで「new ActiveXObject("Excel.Application")」してごにょごにょしてもいいんですけども、やっぱりそこはメインのPythonでなんとかしたいのが人情ってもの。
そこでGoogleを使ってPython+ExcelというキーワードでpyExceleratorというものを発見。しかし結論から言うと複数のセルが結合されていたり、書式バリバリの業務Excelファイルを開こうとすると例外が発生してうまくいかず。ただ単にExcelファイルからデータを抜き取りたいだけなのに。。。
ということでWorking with Excel Files in Pythonのチュートリアルに従って、xlrdというパッケージを使ってみます。このxlrdはExcelファイルの読み込み関連のパッケージで、書き込みはxlwt、複写などその他はxlutilsパッケージに機能が分割されています。
まずはインストール
使用する環境はMac OS X Leopard PowerPC G4です。
>>> sys.version '2.5.1 (r251:54863, Jun 17 2009, 20:37:34) \n[GCC 4.0.1 (Apple Inc. build 5465)]'
easy_installやpipでインストールします。
macmini:~ administrator$ sudo easy_install xlrd Password: Searching for xlrd Reading http://pypi.python.org/simple/xlrd/ Reading http://www.lexicon.net/sjmachin/xlrd.htm Best match: xlrd 0.7.1 Downloading http://pypi.python.org/packages/source/x/xlrd/xlrd-0.7.1.zip#md5=851bd20873224d97cfb5ccca2d22b81c Processing xlrd-0.7.1.zip Running xlrd-0.7.1/setup.py -q bdist_egg --dist-dir /var/folders/ea/eaDvFd-1Hp0oOJrrWgfa-U+++TI/-Tmp-/easy_install-kaKn51/xlrd-0.7.1/egg-dist-tmp-ksHW8- zip_safe flag not set; analyzing archive contents... Adding xlrd 0.7.1 to easy-install.pth file Installing runxlrd.py script to /usr/local/bin Using /Library/Python/2.5/site-packages/xlrd-0.7.1-py2.5.egg Processing dependencies for xlrd Finished processing dependencies for xlrd
早速読み込んでみる
ワークブックをオープンするときにWARNINGが表示されますが、特に支障はなかったです。
>>> import xlrd >>> wb=xlrd.open_workbook("test.xls") WARNING *** XF[191] unknown (raw) format key (31, 0x001f) >>> sheet_1st=wb.sheet_by_index(0) >>> values=[] >>> for row in range(sheet_1st.nrows): ... values.append([sheet_1st.cell(row,col).value for col in range(sheet_1st.ncols)]) ... >>> import pprint >>> pprint.pprint(values)