Daily Archives: 09/04/2013

PythonでExcelを読み書きする。

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を使ってみます。
そのほか、

  1. PythonからExcelを利用するPyvot 0.1.2

など多数、それそれの機能に特化したmoduleがあります。
https://pypi.python.org/pypi?%3Aaction=search&term=xls&submit=searchで検索するとmoduleがhitします。 いろいろと試してみるのも良いですね。

openpyxl install

pygeocoderを動かす環境ですが、

  1. Windows 7 64 bit (32bitでも可)
  2. 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に保存し、実行すると、
blog.godo-tys.jp_wp-content_gallery_python_excel_01_image01.jpg
のようにエラーがなければ、インタープリタ画面には何も表示されません。

F:¥openpyxl-1.6.2¥test_booksのfolderを確認しみると、
blog.godo-tys.jp_wp-content_gallery_python_excel_01_image02.jpg
のようにcheck_book.xlsxが作成されています。

とりあえずは、check_book.xlsxを開いて中身を確認すると、
blog.godo-tys.jp_wp-content_gallery_python_excel_01_image03.jpg
のように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に保存し、実行すると、
blog.godo-tys.jp_wp-content_gallery_python_excel_01_image04.jpg
のようにエラーがなければ、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の使い方をみて勉強してください。

1 / 11

Social Widgets powered by AB-WebLog.com.