2016-09-04

Python で Excel ファイルを読み込む

Python に限らず、ちょっとした自作のプログラムでデータを読み込む時 CSV 形式のデータを読み込むルーチンを作ってよく使っています。CSV 形式を使う理由は、コンマで区切られているだけという簡単な構造であることに他ならないからです。

しかし、Windows 上ではデータ形式が Excel 形式であることがままあり、そういう時は自作のプログラムでそのようなデータを持ち込むために、わざわざ CSV ファイルに保存し直して使っていました。それでも長年このようにしていると慣れてしまうもので、データを読み込む必要がある時は、とりあえず CSV 形式のファイルを読み込むルーチンをつくることが当たり前と思うようになってしまいました。

考えてみると、こういった場合の Excel ファイルは読むこむだけです。そんな Excel ファイルを読むだけの目的で簡単に使える Python のライブラリがないかと探すと、xlrd というライブラリが簡単に見つかりました。私の場合、最終的に Windows 上で使うにしても、最初は Linux (Fedora) 上でプログラムを作ってあれこれ試してみるのが常なのですが、都合の良いことにこの xlrd は Fedora のパッケージでも利用可能でしたので早速試してみました。

使用環境は以下のとおりです。

  • OS: Fedora 24 (x86_64)
  • Python: python-2.7.12-2.fc24.x86_64
  • xlrd: python2-xlrd-0.9.4-3.fc24.noarch

xlrd については、紹介されているサイトがたくさんありますので、ここであらためて同じように使い方の紹介はしませんが、xlrd の機能を網羅的に紹介しているサイトが見つかりませんでしたので、下記参考サイト [1] にマニュアルサイトを紹介しています。

ちなみに、私は、以下のように使っています。

import xlrd

class ...:
    ....
    ....
    # -------------------------------------------------------------------------
    # Read Excel File
    # -------------------------------------------------------------------------
    def read_excelfile(self, filename):
        book = xlrd.open_workbook(filename)
        sheet = book.sheet_by_index(0)

        self.rows = sheet.nrows
        self.cols = sheet.ncols
        self.header = ['' for col in range(self.cols)]
        self.data = [[0 for col in range(self.cols)] for row in range(self.rows - 1)]

        for row in range(self.rows):
            for col in range(self.cols):
                value = sheet.cell_value(row, col)
                if row == 0:
                    self.header[col] = value
                else:
                    self.data[row - 1][col] = value

参考サイト

  1. API Reference — xlrd 1.0.0 documentation

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: