openpyxlを使用しPythonでExcel(エクセル)ファイルを読み取る

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(エクセル)ファイル内で、最初の列の値を出力することができました。

コメント

タイトルとURLをコピーしました