
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)