Pythonの「xlrd」というライブラリについてご紹介します。
import xlrd
xlrd
は Excel (xls) のデータを Python で読むためのライブラリです。 xlrd
は読み込み専用で、書き込み用の xlwt
というライブラリも存在します。
xlrd
では Book → Sheet → Cell という構造でエクセルデータを抽出します。
まずは Book を開くところから見ていきましょう。
Excel ファイルを開くには関数 open_workbook()
を用います。引数は対象ファイルのパスです。
FILE = 'excelbook.xls'
book = xlrd.open_workbook(FILE)
open_workbook()
で Excel ファイルを開いたら(= Book
オブジェクトを作成したら)、アトリビュートやメソッドを使ってその中身の情報にアクセスすることができます。
# 文字コード
print 'encoding:', book.encoding
# シートの枚数
print 'number of sheets:', book.nsheets
# シートの一覧(名前、データの入った行と列の数)
print 'sheets:'
for s in book.sheets():
print '%s %sx%s' % (s.name, s.nrows, s.ncols)
シートの中身を取得するには、 Book
から Sheet
オブジェクトを取得してから cell()
メソッドを使います。
# Sheet1という名前のシートを取得
s = book.sheet_by_name('Sheet1')
print s.cell(1, 3) # 指定した行・列のCellオブジェクトを取得
print s.cell_type(1, 3) # セルのtypeを取得
print s.cell_value(1, 3) # セルのvalueを取得
Sheet
を取得する方法は 2 とおりあります。
- 名前で取得する:
sheet_by_name()
- インデックスで取得する:
sheet_by_index()
各セルには type
と value
という情報が入っています。 type
には「文字列」や「数値」といったセルのフォーマット情報が value
にはデータの値が入っています。 type
には
- 1: 文字列
- 2: 数値
- 3: 日付
といった形であらかじめ番号が割り当てられています。
行番号、列番号が 0
始まりの数字であることに注意が必要です。たとえば、 cell(1, 3)
でアクセスできるセルはエクセル上では上から 2 行目、左から 4 列目のセルになります。
セル単位ではなく、行単位、列単位でデータを取得したいときのために row()
col()
というメソッドも用意されています。
s.row(0) # 最初の行のセルをリストで取得
s.col(0) # 最初の列のセルをリストで取得
s.col_values(0) # 最初の行の値をリストで取得
以上です。
インストール
setuptools
と pip
が入っていればターミナルで pip install xlrd
と打つとインストールできます。