2024年5月14日 6時43分

PythonのopenpyxlでExcelを操作する方法|ファイル一覧の出力とシート作成

最終更新:2026年10月27日 20時13分

この記事を書いたきっかけ

業務で、Power BIのクラウド上にあるファイル名をExcelへ転記する作業がありました。

手作業で対応したところ、約3時間かかりました。

ファイル名を一つずつ転記するのではなく、Pythonを使えば作業を減らせるのではないかと考えました。

そこで、PythonからExcelを操作する方法を学び始めました。

この記事では、次の内容を紹介します。

  • openpyxlを使ったExcel操作の基本
  • CSVファイル名をExcelへ一覧出力するサンプル
  • Excelに新しいシートを作成する方法
  • 実際に試して気づいたこと

※当時の業務を自動化した実績ではなく、学習内容と応用サンプルをまとめた記事です。

1. openpyxlとは

openpyxlは、PythonからExcelファイル(.xlsx)を読み書きできるライブラリです。

例えば、次のような操作ができます。

  • Excelファイルの作成
  • セルへの値の書き込み
  • シートの追加
  • 既存ファイルの読み込みと更新

インストールするには、ターミナルで以下を実行します。

python3 -m pip install openpyxl

インストールされているかは、次のコマンドで確認できます。

python3 -m pip show openpyxl

Pythonの実行環境が異なると、インストールしたライブラリを利用できない場合があります。実行するPythonとインストール先を揃えることが重要です。

2. CSVファイル名をExcelに一覧出力する

ファイル名を一つずつExcelに入力する代わりに、Pythonで一覧を作成する例です。

準備

作業フォルダに input フォルダを作成し、対象のCSVファイルを入れます。

作業フォルダ/
├── input/
│   ├── 売上_01.csv
│   ├── 売上_02.csv
│   └── 売上_03.csv
└── file_list.py

Pythonコード

from pathlib import Path
from openpyxl import Workbook

input_dir = Path("input")
output_path = Path("file_list.xlsx")

if not input_dir.is_dir():
    raise FileNotFoundError("inputフォルダがありません")

if output_path.exists():
    raise FileExistsError("出力ファイルが既に存在します")

workbook = Workbook()
sheet = workbook.active
sheet.title = "ファイル一覧"
sheet.append(["ファイル名"])

for path in sorted(input_dir.glob("*.csv")):
    if path.is_file():
        sheet.append([path.name])

workbook.save(output_path)

print(f"{sheet.max_row - 1}件のファイル名を出力しました")

実行方法

作業フォルダで以下を実行します。

python3 file_list.py

実行すると、file_list.xlsx が作成されます。

ファイル名
売上_01.csv
売上_02.csv
売上_03.csv

このように、フォルダ内のCSVファイル名をまとめてExcelに出力できます。

対象は input フォルダ直下の .csv ファイルです。CSVの中身は読み込まず、変更もしません。

3. Excelに新しいシートを作成する

ここからは、2024年5月14日に実際に試した内容です。

まず、sample.xlsx というExcelファイルを用意しました。

既存のExcelファイルに新しいシートを追加するには、次のように書きます。

from openpyxl import load_workbook

workbook = load_workbook("sample.xlsx")

workbook.create_sheet("new")

workbook.save("sample.xlsx")

load_workbook() で既存のExcelファイルを読み込み、create_sheet() で新しいシートを作成します。

最後に save() で保存します。

※同じ名前のシートが存在する場合は、意図しない名前のシートが追加される可能性があるため、実際の業務では事前確認が必要です。また、元のファイルを上書きするため、検証時はコピーを使用するのが安全です。

4. 実際に試して気づいたこと

当時、Pythonを実行してもExcelに新しいシートが表示されず、うまくいかなかったと思いました。

しかし、Excelファイルを一度閉じて開き直すと、new シートが作成されていることを確認できました。

つまり、Pythonの処理自体は成功していたものの、開いていたExcel画面に変更が反映されていなかったということです。

この経験から、プログラムの実行結果と、Excel画面に表示されている状態は分けて確認する必要があると学びました。

実際の開発では、保存したファイルを再度読み込み、期待したシートが存在するかを確認すると、より確実です。

5. 今回の学びと業務への応用

今回の学習を通じて、PythonからExcelファイルを操作する基本を確認できました。

特に、同じ形式の作業を繰り返す場合、Pythonで処理をまとめることで手作業を減らせる可能性があります。

例えば、ファイル名の一覧作成だけでなく、Excelのデータ整形やチェック処理にも応用できます。

ただし、当初のPower BIクラウド上のファイル名取得については、今回のサンプルでは実装していません。実現するには、利用できるAPIやアクセス権限、対象画面の仕様などを確認する必要があります。

小さな操作から理解を積み重ね、実際の業務課題に応用できる技術を身につけていきたいと思います。

参考資料

カテゴリー:技術・開発

タグ: