PythonでExcelを読み書きする。
PythonでExcelのファイルを読み書きしてみます。
有名どころでは、python-excelなるmoduleがあります。
「python-excel」ライブラリは「xlrd」「xlwt」「xlutils」という3つのパッケージが存在します。Installerもそれぞれ分かれており、ぞれぞれdownloadしてinstallできます。
詳しくは、pythonでexcelで説明されていますので、参考にしてください。
ここでは、Excelのfile拡張子がxlsxの2007以降のExcel fileを読み書きしてみます。
今回使うmoduleは、openpyxlを使ってみます。
そのほか、
-
PythonからExcelを利用するPyvot 0.1.2
など多数、それそれの機能に特化したmoduleがあります。
https://pypi.python.org/pypi?%3Aaction=search&term=xls&submit=searchで検索するとmoduleがhitします。 いろいろと試してみるのも良いですね。
openpyxl install
pygeocoderを動かす環境ですが、
-
Windows 7 64 bit (32bitでも可)
-
Python 2.7.5 (2013年6月18日現在最新版)
で行います。
環境の構築に関しては、PythonでGeoSpatialをやってみる。[Chapter 1]のinstallのsectionを参考にしてください。
まずは、openpyxl 1.6.2からopenpyxl-1.6.2.tar.gzをdownloadして、解凍します。
その後、解凍したfolderにcdして、cmdターミナルから
python setup.py install
を実行します。
以上でinstallは終わりです。
how to openpyxl
使い方はいたって簡単です。
PyScripterやIDLEなどからcodeを実行します。
Excel Workbookに書き出す
まずは、ExcelのWorkbookに書き出してみます。
下記codeをPyScripterに入力します。
[python]
from openpyxl import Workbook
from openpyxl.cell import get_column_letter
wb = Workbook()
dest_filename = r’F:¥¥openpyxl-1.6.2¥¥test_books¥¥check_book.xlsx’
ws = wb.worksheets[0]
ws.title = "range names"
for col_idx in xrange(1, 40):
col = get_column_letter(col_idx)
for row in xrange(1, 600):
ws.cell(‘%s%s’%(col, row)).value = ‘%s%s’ % (col, row)
ws = wb.create_sheet()
ws.title = ‘Pi’
ws.cell(‘F5′).value = 3.14
wb.save(filename = dest_filename)
[/python]
注意)上記codeで¥は全角ですので、半角にするかもしくは、バックスラッシュに置き換えてください。
code入力後は、F:¥openpyxl-1.6.2¥test_books¥xlsx_write_module_01.pyに保存し、実行すると、
のようにエラーがなければ、インタープリタ画面には何も表示されません。
F:¥openpyxl-1.6.2¥test_booksのfolderを確認しみると、
のようにcheck_book.xlsxが作成されています。
とりあえずは、check_book.xlsxを開いて中身を確認すると、
のようにcheck_book.xlsxのsheet内に値が入力されていることがわかります。
Excel Workbookを呼び出す
次に、ExcelのWorkbookを呼び出してみます。
下記codeをPyScripterに入力します。
[python]
from openpyxl import load_workbook
dest_filename = r’F:openpyxl-1.6.2test_bookscheck_book.xlsx’
wb = load_workbook(filename = dest_filename)
sheet_ranges = wb.get_sheet_by_name(name = ‘range names’)
print sheet_ranges.cell(‘D18′).value
[/python]
注意)上記codeで¥は全角ですので、半角にするかもしくは、バックスラッシュに置き換えてください。
code入力後は、F:¥openpyxl-1.6.2¥test_books¥xlsx_read_module_01.pyに保存し、実行すると、
のようにエラーがなければ、cell('D18')の値がインタープリタ画面に表示されます。
日本語の読み書き
日本語の読み書きについては、py fileをUTF-8で保存して、
py modlueの1行目に
# -*- coding: utf-8 -*-
を付け加えればOKです。
例えば、Excel Workbookに書き出す場合は、
[python]
# -*- coding: utf-8 -*-
from openpyxl import Workbook
from openpyxl.cell import get_column_letter
wb = Workbook()
dest_filename = r’F:¥¥openpyxl-1.6.2¥¥test_books¥¥check_book2.xlsx’
ws = wb.worksheets[0]
ws.title = u"日本語"
ws.cell(‘A1′).value = u’行1’
ws.cell(‘A2′).value = u’行2’
ws.cell(‘A3′).value = u’行3’
ws.cell(‘A4′).value = u’行4’
wb.save(filename = dest_filename)
[/python]
注意)上記codeで¥は全角ですので、半角にするかもしくは、バックスラッシュに置き換えてください。
code入力後は、F:¥openpyxl-1.6.2¥test_books¥xlsx_write_module_02.pyに保存し、実行すると、check_book2.xlsxが作成されます。
中身は日本語となっています。
読み込みについても同様ですので、exerciseとしてtryしてみてください。
今回のまとめ
openpyxlを使って簡単にExcel Workbookの読み書きしてみました。moduleの使用については必要最低限の利用方法ですので、詳しくはopenpuxlの使い方をみて勉強してください。
最近のコメント