openpyxlを使用しPythonでExcel(エクセル)ファイルを読み取ることについて解説しています。
なお、openpyxlモジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■Excel(エクセル)ファイルを用意する
openpyxlを使用し、PythonでExcel(エクセル)ファイルを読み取ってみますが、その前にExcel(エクセル)ファイルを用意します。
今回はtest.xlsxという上記のExcel(エクセル)ファイルを用意しました。
ファイルが保存されている場所は「C:\Users\user\test(フォルダパス)」となっています。
■openpyxlを使用しExcel(エクセル)ファイルを読み取る
Excel(エクセル)ファイルの用意できましたので、openpyxlを使用しExcel(エクセル)ファイルを読み取るスクリプトを書いていきます。
■特定のセル値を出力する
■コード
import openpyxl path = r"C:\Users\user\test\test.xlsx" wb_object = openpyxl.load_workbook(path) sheet_object = wb_object.active cell_object = sheet_object.cell(row = 1, column = 1) print(cell_object.value)
インポートでopenpyxlモジュールを呼び出します。pathという変数を作成し、その中に今回用意したExcel(エクセル)ファイルと保存場所を指定し、格納します。
格納後、wb_objectという変数を作成し、openpyxl.load_workbook()と記述し、括弧内にExcel(エクセル)ファイルと保存場所を指定します。こうすることで、今回用意したExcel(エクセル)ファイルのworkbookオブジェクトを取得し格納します。
格納後、sheet_objectという変数を作成し、今回用意したExcel(エクセル)ファイルのworkbookオブジェクトのアクティブ(active)なシートを取得し、格納します。
次にcell_objectという変数を作成し、sheet_object.cell()と記述し、先ほど取得したアクティブ(active)なシート内から括弧内で指定したセルの情報を取得し格納します。
今回はアクティブ(active)なシート内の「row(行)が1行目、column(列)が1列目」のセルを指定しています。
最後に取得したセルの情報をprint関数で取得してみます。
■実行
今回のスクリプトを「Excel_reading.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、今回用意したExcel(エクセル)ファイル内で、特定のセル値が取得され、出力できることを確認できました。
■全ての列名を出力する
次に、openpyxlを使用し全ての列名を出力するスクリプトを書いていきます。
■コード
import openpyxl path = r"C:\Users\user\test\test.xlsx" wb_object = openpyxl.load_workbook(path) sheet_object = wb_object.active max_col = sheet_object.max_column for i in range(1, max_col + 1): cell_object = sheet_object.cell(row = 1, column = i) print(cell_object.value)
インポートでopenpyxlモジュールを呼び出します。pathという変数を作成し、その中に今回用意したExcel(エクセル)ファイルと保存場所を指定し、格納します。
格納後、wb_objectという変数を作成し、openpyxl.load_workbook()と記述し、括弧内にExcel(エクセル)ファイルと保存場所を指定します。こうすることで、今回用意したExcel(エクセル)ファイルのworkbookオブジェクトを取得し格納します。
格納後、sheet_objectという変数を作成し、今回用意したExcel(エクセル)ファイルのworkbookオブジェクトのアクティブ(active)なシートを取得し、格納します。
格納後、max_colという変数を作成し、取得したアクティブ(active)なシート内のmax_column(最大列)を取得し、格納します。
格納後、for文によるループ処理(繰り返し処理)で、アクティブ(active)なシート内の「row(行)が1行目」で、column(列)がmax_column(最大列)と指定します。指定しますが、max_column(最大列)は「0列目」から取得なので、「+1」とし、「アクティブ(active)なシート内の1列目から最大列まで」と指定します。
このようにすると、ループ処理(繰り返し処理)でアクティブ(active)なシート内の列を取得し、格納することができます。
最後に格納した列の情報をprint関数で出力します。
■実行
今回のスクリプトを「Excel_reading2.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、今回用意したExcel(エクセル)ファイル内で、指定した全ての列名を出力することができました。
■最初の列の値を出力する
次に、openpyxlを使用し最初の列の値を出力するスクリプトを書いていきます。
■コード
import openpyxl path = r"C:\Users\user\test\test.xlsx" wb_object = openpyxl.load_workbook(path) sheet_object = wb_object.active max_row = sheet_object.max_row for i in range(1, max_row + 1): cell_object = sheet_object.cell(row = i, column = 1) print(cell_object.value)
インポートでopenpyxlモジュールを呼び出します。pathという変数を作成し、その中に今回用意したExcel(エクセル)ファイルと保存場所を指定し、格納します。
今回は、max_colという変数を作成し、取得したアクティブ(active)なシート内のmax_row(最大行)を取得し、格納します。
格納後、for文によるループ処理(繰り返し処理)で、アクティブ(active)なシート内の「column(列)が1列目」で、row(行)がmax_row(最大行)と指定します。指定しますが、max_row(最大行)は「0列目」から取得なので、「+1」とし、「アクティブ(active)なシート内の1行目から最大行まで」と指定します。
このようにすると、ループ処理(繰り返し処理)でアクティブ(active)なシート内の1列目の全ての行を取得し、格納することができます。
最後に格納した1列目の全ての行をprint関数で出力します。
■実行
今回のスクリプトを「Excel_reading3.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、今回用意したExcel(エクセル)ファイル内で、最初の列の値を出力することができました。
コメント