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)