行単位で取り出す
rowsプロパティ が返すオブジェクトのタプルには、全ての行単位 の Cellオブジェクト が格納されています。
forループを2重 にすることで、全てのデータを 行単位 で取得することができます。
[Google Colaboratory]
1 | import openpyxl, pprint |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
全てのデータを 行単位 で取得することができました。
rowsプロパティ が返すオブジェクトのタプルには、全ての行単位 の Cellオブジェクト が格納されています。
forループを2重 にすることで、全てのデータを 行単位 で取得することができます。
[Google Colaboratory]
1 | import openpyxl, pprint |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
全てのデータを 行単位 で取得することができました。
columnsプロパティ が返すオブジェクトのタプルには、全ての列単位 の Cellオブジェクト が格納されています。
forループを2重 にすることで、全てのデータを 列単位 で取得することができます。
[Google Colaboratory]
1 | import openpyxl, pprint |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
全てのデータを 列単位 で取得することができました。
Excelでは、ワークシート上をドラッグして 複数のセルの範囲 を指定して、コピーや移動などの操作を行うことができます。
OpenPyXLの Worksheetオブジェクト には Cellオブジェクト が格納されているので、ブラケット演算子を使うことで 特定範囲のCellオブジェクト を取り出すことができます。
[Google Colaboratory]
1 | import openpyxl, pprint |
[実行結果]
列Aから列E の 2目から7行目まで の各レコードが、タプルの中にタプル が格納されたデータ形式で取得することができました。
openpyxl.utilsクラス の関数を使うと、列番号から列の文字 を取得したり、列の文字から列番号 を取得をしたりすることが行えます。
セル番地の変換を行うサンプルコードは以下の通りです。
まずは、数値を列文字 に、列文字を数値 に変換してみます。
[Google Colaboratory]
1 | import openpyxl |
[実行結果]
次に、Excelを読み込んで 最終列を数字 で取得し、その数字を 列文字 に変換します。
[Google Colaboratory]
1 | # 集計表の最終列を列文字で取得する |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
最終列の列文字 を取得することができました。
Worksheetオブジェクトの max_rowプロパティ と max_columnプロパティ を参照すると、集計表のサイズを取得することができます。
集計表のサイズを取得することで、forループでデータを取得するときの 最終位置 とすることができるので便利です。
[Google Colaboratory]
1 | import openpyxl |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
max_rowプロパティ で集計表の 最大行数、max_columnプロパティ で 最大列数 を取得することができました。
Excelのセル番地は A1 や B1 のように、列をAから始まる アルファベット、行を 数値 で表します。
ただ、プログラムにおいては 列を文字 で指定するのは面倒です。
そこで Worksheetオブジェクト の cellメソッド を使うとセル番地を 数値のみ で指定でき forループ などで特定のセル範囲を連続して処理できるようになります。
まずは A3セル を、1列 3行目 という数値の指定だけで取得してみます。
[Google Colaboratory]
1 | import openpyxl |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
cellメソッド を forループ の中で使うと、指定した範囲 のセルの値を取得することができます。
[Google Colaboratory]
1 | # 指定した範囲のセルの値を取得する |
[実行結果]
rangeの 第3引数 を指定すると、指定した数だけ スキップ することができます。
[Google Colaboratory]
1 | # 開始セルから行おきに取り出す(偶数列のセルを対象) |
[実行結果]
range関数の第3引数に2を指定することで 1行おき に値を取り出すことができました。
Cellオブジェクト には、セルの情報を参照するための プロパティ があります。
プロパティ | 内容 |
---|---|
row | 行を示す整数値。 |
column | 列を示す文字列。 |
coordinate | セル番地を示す文字列。 |
value | セルの値 |
それぞれの プロパティ を参照したサンプルコードは以下の通りです。
[Google Colaboratory]
1 | import openpyxl |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
各プロパティの内容を取得することができました。
Workbookオブジェクト から Worksheetオブジェクト を取得すると、列と行を指定して セルの情報(Cellオブジェクト) を取得できるようになります。
セルの情報を取得するには Worksheetオブジェクト[‘セル番地’] と指定します。
Cellオブジェクト にはセルの値を参照する valueプロパティがあるので Cellオブジェクト.value とすることでセルの値を取得できます。
[Google Colaboratory]
1 | import openpyxl |
読み込むエクセルファイルは下記になります。
[テスト.xlsx]
[実行結果]
Excelファイルから、各セルの情報を取得することができました。
Excelファイル内のExcelシートを取得する方法には、次の2つがあります。
上記の2種類の方法でExcelシートを読み込みます。
Wroksheetオブジェクトには タイトル(シート名) を参照する titleプロパティ があるので、このプロパティを使ってシートのタイトルを取得します。
[Google Colaboratory]
1 | import openpyxl |
[実行結果]
‘sheet1’という名称のシート と アクティブなシート を取得し、その タイトル(シート名)を表示することができました。
openpyxlモジュールの Workbookオブジェクト にはブックに含まれるExcelシートのタイトルの取得、アクティブなシートの取得、さらに特定のシートを取得するメソッドが用意されています。
ブックに含まれているシート名は、Workbookオブジェクトの sheetnamesプロパティ を使って取得することができます。
[Google Colaboratory]
1 | import openpyxl |
[実行結果]
全てのシート名が リスト型 で取得できました。