PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。
本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。
openpyxlのインストール方法
openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。
pip install openpyxl
シート名を確認する
新しいワークブックを作成すると、デフォルトで「Sheet」という名前のアクティブシートが生成されます。以下のコードでシート名を確認できます。
サンプルコード
import openpyxl
my_wb = openpyxl.Workbook()
my_sheet = my_wb.active
my_sheet_title = my_sheet.title
print("シート名: " + my_sheet_title)
実行結果
シート名: Sheet
シート名を変更する
title属性に新しい文字列を代入するだけで、シート名を自由に変更できます。
サンプルコード
import openpyxl
my_wb = openpyxl.Workbook()
my_sheet = my_wb.active
my_sheet.title = "新しいシート"
print("変更後のシート名: " + my_sheet.title)
実行結果
変更後のシート名: 新しいシート
Excelシートにデータを書き込む
セルへの値の設定は、cell(row=行番号, column=列番号)メソッド、または「A1」「B2」のようなセル参照(A1記法)のどちらでも行えます。書き込み後はsave()メソッドでファイルに保存します。
サンプルコード
import openpyxl my_wb = openpyxl.Workbook() my_sheet = my_wb.active c1 = my_sheet.cell(row=1, column=1) c1.value = "Aadrika" c2 = my_sheet.cell(row=1, column=2) c2.value = "Adwaita" c3 = my_sheet['A2'] c3.value = "Satyajit" # B2セル = 2列目 × 2行目 c4 = my_sheet['B2'] c4.value = "Bivas" # パスはraw文字列(r"...")で指定すると安全です my_wb.save(r"C:\Users\TP\Desktop\Book1.xlsx")
実行結果
保存されたBook1.xlsxを開くと、A1〜B2セルにそれぞれ名前が書き込まれていることが確認できます。
ワークブックにシートを追加する
create_sheet()メソッドを使うと、既存のワークブックに新しいシートを追加できます。index引数で挿入位置を、title引数でシート名を指定します。
サンプルコード
import openpyxl my_wb = openpyxl.Workbook() my_sheet = my_wb.active # インデックス1(2番目)の位置に「new sheet」を追加 my_wb.create_sheet(index=1, title="new sheet") my_wb.save(r"C:\Users\TP\Desktop\Book1.xlsx")
実行結果
行数の合計を表示する
既存のExcelファイルを読み込むにはload_workbook()を使用します。シートの最大行数はmax_rowプロパティで取得できます。
サンプルコード
import openpyxl my_path = r"C:\Users\TP\Desktop\Book1.xlsx" my_wb_obj = openpyxl.load_workbook(my_path) my_sheet_obj = my_wb_obj.active print(my_sheet_obj.max_row)
実行結果
2
特定のセルの値を表示する
行番号と列番号を指定してcell()メソッドを呼び出し、valueプロパティを参照することで、任意のセルの値を取得できます。
サンプルコード
import openpyxl # ファイルの場所を指定 my_path = r"C:\Users\TP\Desktop\Book1.xlsx" wb_obj = openpyxl.load_workbook(my_path) my_sheet_obj = wb_obj.active # 1行目・1列目(A1セル)の値を取得 my_cell_obj = my_sheet_obj.cell(row=1, column=1) print(my_cell_obj.value)
実行結果
Aadrika
列数の合計を表示する
最大列数はmax_columnプロパティで取得できます。
サンプルコード
import openpyxl # ファイルの場所を指定 my_path = r"C:\Users\TP\Desktop\Book1.xlsx" wb_obj = openpyxl.load_workbook(my_path) sheet_obj = wb_obj.active print(sheet_obj.max_column)
実行結果
2
すべての列名(1行目の値)を表示する
max_columnで取得した列数分だけループ処理を行い、1行目の各セルの値を順に出力します。
サンプルコード
import openpyxl
# ファイルの場所を指定
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
# ワークブックオブジェクトを作成
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_max_col = my_sheet_obj.max_column
for i in range(1, my_max_col + 1):
my_cell_obj = my_sheet_obj.cell(row=1, column=i)
print(my_cell_obj.value)
実行結果
Aadrika Adwaita
1列目のすべての値を表示する
同様に、max_rowで行数を取得し、1列目の値を上から順に取り出すこともできます。
サンプルコード
import openpyxl
# ファイルの場所を指定
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_row = my_sheet_obj.max_row
for i in range(1, my_row + 1):
cell_obj = my_sheet_obj.cell(row=i, column=1)
print(cell_obj.value)
実行結果
Aadrika Satyajit
特定の行の値を表示する
行番号を固定して列方向にループすれば、指定した行の全データを一度に取得できます。end=" "を指定すると、改行せずに横並びで出力されます。
サンプルコード
import openpyxl
# ファイルの場所を指定
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_max_col = my_sheet_obj.max_column
for i in range(1, my_max_col + 1):
cell_obj = my_sheet_obj.cell(row=2, column=i)
print(cell_obj.value, end=" ")
実行結果
Satyajit Bivas
まとめ
openpyxlを使えば、Excelファイルの作成・編集・読み取りといった一連の操作をPythonから簡単に自動化できます。日常的なデータ集計やレポート作成の効率化にぜひ活用してみてください。なお、Windows環境でファイルパスを指定する際は、バックスラッシュによるエスケープ問題を避けるため、raw文字列(r"C:\...")を使うことをおすすめします。
-
PythonのxlsxwriterモジュールでExcelファイルを作成・書き込みする方法
Pythonは豊富なライブラリ群を活用することで、データ処理ツールとして広く利用されているMicrosoft Excelと連携できます。本記事では、xlsxwriterというモジュールを使ってExcelファイルを新規作成し、データを書き込む方法を解説します。なお、xlsxwriterは新規ファイルの作成に特化したモジュールのため、既存のExcelファイルへの追記や編集には対応していません。個別のセルに書き込む方法最も基本的な方法は、セル番地(例:A1、B2など)を指定して直接書き込むやり方です。以下の例では、まずワークブックを作成し、その後にワークシートを追加します。最後にwrite()メソッ
-
PythonのopenpyxlでExcelファイルに対して算術演算を行う方法
Pythonを使えば、Python環境から直接Excelファイルを操作できます。ワークシート内の特定のセルやセル範囲を参照し、そこに対して算術演算を適用することが可能です。さらに、演算結果もPythonプログラムで指定した任意のセルに保存できます。 以下の例では、Excelに組み込まれた関数(SUMやAVERAGEなど)を利用してさまざまな算術演算を実行します。まずopenpyxlモジュールでワークブックを作成してアクティブにし、あらかじめ決めておいたセルに値を書き込みます。その後、それらのセル範囲に対して関数を適用し、計算結果を別のセルに出力します。 使用する主なExcel関数 SUM:指