ライブラリ: xlwt

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」と打つとインストールすることができます。

参考