pythonでExcelのデータを読み込む方法


pythonにはExcelの.xlsxや.xlsのデータを操作する事ができます。
ただしサードパーティー製のパッケージを利用する必要があります。



pipによるパッケージのインストール

まずはエクセルを扱う為にpipによるパッケージのインストールをします。

pipで利用する方法はpipでPythonのパッケージをインストールする方法を参考にしてください。

インストールするパッケージ名はxlrdです。

pip install xlrd

これでインストール出来ます。

xlrdを使ったエクセルデータの読み込み

#xlrdをインポートする
import xlrd

#.xlsxファイルを開く
xl_bk = xlrd.open_workbook("test.xlsx")

#.xlsxファイルに含まれるシートの数
print("シートの数",xl_bk.nsheets)

#シートをインデックスから取得する
xl_sh = xl_bk.sheet_by_index(0)

#シートを名前から取得する
xl_sh = xl_bk.sheet_by_name("Sheet1")

#シートの名前を表示
print("シートの名前",xl_sh.name)

#シートの持つ列の数を表示
print("列の数",xl_sh.ncols)

#シートの持つ行の数を表示
print("行の数",xl_sh.nrows)

#シートの中のセルの中身を表示
print("セルのA2の中身",xl_sh.cell(1,0).value)
print("セルのA2の中身",xl_sh.cell_value(1,0))

#シートの中のセルの属性を表示
print("セルのA2のタイプ",xl_sh.cell_type(1,0))

.xlsファイルや.xlsxファイルを読み込むにはxlrdをインポートします。

インポートするには
import xlrd
と他の命令を使う前に宣言しておきます。

.xlsxを開く方法

xl_bk = xlrd.open_workbook("test.xlsx")

Excelデータを受け取るオブジェクトの変数 = xlrd.open_workbook( .xlsxファイル名 )

xlrd.open_workbookにパスと.xlsファイルや.xlsxファイルの名を示す文字列を入れます。
これでExcelデータを受け取るオブジェクトの変数が返ってきます。

シートの数を取得する方法

print("シートの数",xl_bk.nsheets)

Excelデータを受け取るオブジェクト.nsheets
.nsheetsにシートの数が数値で入っています。

Excelオブジェクトからシートを取得する方法

xl_sh = xl_bk.sheet_by_index(0)

シートオブジェクト変数=Excelデータオブジェクト.sheet_by_index( インデックス番号 )
0からnsheetsの範囲のインデックス番号で指定した番号のシートのオブジェクトが取得できます。

範囲外を指定するとエラーになります。

Excelオブジェクトからシート名からシートを取得する方法

xl_sh = xl_bk.sheet_by_name("Sheet1")

シートオブジェクト変数=Excelデータオブジェクト.sheet_by_name( シートの名前 )
シートの名前からシートのオブジェクトが取得できます。

存在しないシート名を指定するとエラーになります。

シートオブジェクトからシートの名前を取得する方法

print("シートの名前",xl_sh.name)

シートオブジェクト.name
取得したシートオブジェクトの名前が取得できます。

シートオブジェクトからシートの列の数を取得する方法

print("列の数",xl_sh.ncols)

シートオブジェクト.ncols
取得したシートオブジェクトのシートに(アルファベットで識別される)横幅がいくつあるかを取得できます。

シートオブジェクトからシートの行の数を取得する方法

print("行の数",xl_sh.nrows)

シートオブジェクト.nrows
取得したシートオブジェクトのシートに(数字で識別される)縦幅がいくつあるかを取得できます。

シートオブジェクトからシートに書かれている物を取得する方法

print("セルのA2の中身",xl_sh.cell(1,0).value)
print("セルのA2の中身",xl_sh.cell_value(1,0))

シートオブジェクト.cell( 縦を示す数値 , 横を示す数値 ).value

あるいは

シートオブジェクト.cell_value( 縦を示す数値 , 横を示す数値 )

取得したシートオブジェクトのシートに書かれたセルの内容を取得します。
取得するセルの番号は、縦を示す数値(Excelでは数字で示される所)と、横を示す数値 (Excelではアルファベットで示される所)を0から開始する数字で指定します。

シートオブジェクトからシートに書かれている物がどんな属性かを取得する方法

print("セルのA2のタイプ",xl_sh.cell_type(1,0))

シートオブジェクト.cell_type( 縦を示す数値 , 横を示す数値 )

取得したシートオブジェクトのシートに書かれたセルの属性を取得します。
取得するセルの番号は、縦を示す数値(Excelでは数字で示される所)と、横を示す数値 (Excelではアルファベットで示される所)を0から開始する数字で指定します。

取得されるセルの属性は以下のようになっています。

状態 属性 cell_typeで返ってくる値
空のセル empty 0
テキスト text 1
数字 number 2
日付 xldate 3

xlrdを配列に読み込むサンプル

2次元配列に入れ込む場合は以下のようになります。

import xlrd

xl_bk = xlrd.open_workbook("test.xlsx")
xl_sh = xl_bk.sheet_by_index(0)

ary=[[None for p in range(xl_sh.ncols)] for q in range(xl_sh.nrows)]

for y in range(xl_sh.nrows):
    for x in range(xl_sh.ncols):
        ary[y][x]=xl_sh.cell(y,x).value
print(ary)
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする

関連記事



スポンサーリンク