Pythonの「xlwt」というライブラリについてご紹介します。
import xlwt
「xlwt」は、PythonからExcelファイル(xls)に書き込むためのライブラリです。読み込む方の「xlrd」と対になっています。
機能はシンプルで、1)ブックとシートを作成して、2)シートに書き込む、という流れで使います。xlrdと同じく、「ブック→シート→セル」という構成を頭に置いておくと理解しやすいかと思います。
以下、使い方を見ていきます。
データの保存
import xlwt
# データを保存するファイルとシートの名前
FILE = 'test.xls'
SHEET = 'testSheet01'
# WorkbookとWorksheetを作成
book = xlwt.Workbook()
s = book.add_sheet(SHEET)
# データをシートに書き込み
mydata = [1, 2, 3, 4, 5]
for i, ele in enumerate(mydata):
# 0行、i列目にデータeleを書き込み
s.write(0, i, ele)
# ファイルに保存
book.save(FILE)
データを保存するために最小限必要なのは
- Workbook()
- add_sheet()
- write()
- save()
の4つです。流れとしては、ブックを開いて、シートを追加して、シートに書き込んで、ブック全体をファイルに保存、という形になります。
現状、既存のファイルに追加書き込みをすることはできないため、原則新規作成です。
関数の使用
s.write(1, 0, xlwt.Formula('SIN(A1) * 2'))
セルに値ではなくExcelの関数を挿入したい場合は、Formulaオブジェクトを使います。上記のようにすると、上から2行目、左から1つめのセル(A2セル)に数式「SIN(A1) * 2」が書き込まれます。Excel上で数式を書くときの=(イコール)は必要ありません。
余談ですが、数式の中で他のセルを指定する場合、「A1」「B4」といった形での指定になります。行番号の部分は整数でシンプルでいいのですが、列番号の部分は「A, B, C, ..., Z, AA, AB, AC, ...」といった形でアルファベットによる26進法になるので、少し工夫が必要です。26列目よりも右側(AA以降)を使う場合には、たとえば、次のように、列指定のためのCOLというリストをひとつ作っておくと便利です。
COL = []
ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ALPHAS = ' ' + ALPHA
for d1 in ALPHAS:
for d2 in ALPHA:
COL.append((d1 + d2).strip())
print COL
# COL = ['A', 'B', ...'Z', 'AA', 'AB', ...]
書式の設定
style0 = xlwt.easyxf(strg_to_parse='font: name Meiryo, color-index red, bold on',
num_format_str='#,##0.00')
s.write(2, 0, 12.3, style0)
セルの書式を設定するには、easyxf()という関数を使います。ふたつの引数strg_to_parse、nu_format_strのうち、前者はフォントやアラインメント(セル内での表示位置)などを指定します。後者は、数値や日付のフォーマットを指定するのに使います。
以上です。
xlwtは、OSがWindowsでなくても動作するということでその点は便利なのですが、名前付きセル、フィルタ、ピボットテーブルといった機能は現状備えていないようです。ですので、何か凝ったことをしようとするのではなく、あくまでも、データをエクセルに保存する、というシンプルな使い方に留めておいた方が良さそうです。
インストール 「pip」が入っていれば、コマンドから「pip xlwt」と打つとインストールすることができます。