Python
 Computer >> コンピューター >  >> プログラミング >> Python

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")

実行結果

PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】

保存された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")

実行結果

PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】

行数の合計を表示する

既存の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:\...")を使うことをおすすめします。

  1. PythonのxlsxwriterモジュールでExcelファイルを作成・書き込みする方法

    Pythonは豊富なライブラリ群を活用することで、データ処理ツールとして広く利用されているMicrosoft Excelと連携できます。本記事では、xlsxwriterというモジュールを使ってExcelファイルを新規作成し、データを書き込む方法を解説します。なお、xlsxwriterは新規ファイルの作成に特化したモジュールのため、既存のExcelファイルへの追記や編集には対応していません。個別のセルに書き込む方法最も基本的な方法は、セル番地(例:A1、B2など)を指定して直接書き込むやり方です。以下の例では、まずワークブックを作成し、その後にワークシートを追加します。最後にwrite()メソッ

  2. PythonのopenpyxlでExcelファイルに対して算術演算を行う方法

    Pythonを使えば、Python環境から直接Excelファイルを操作できます。ワークシート内の特定のセルやセル範囲を参照し、そこに対して算術演算を適用することが可能です。さらに、演算結果もPythonプログラムで指定した任意のセルに保存できます。 以下の例では、Excelに組み込まれた関数(SUMやAVERAGEなど)を利用してさまざまな算術演算を実行します。まずopenpyxlモジュールでワークブックを作成してアクティブにし、あらかじめ決めておいたセルに値を書き込みます。その後、それらのセル範囲に対して関数を適用し、計算結果を別のセルに出力します。 使用する主なExcel関数 SUM:指