業務で多数のExcelファイル(各部署の報告書など)から、特定のセル情報だけを抜き出して一覧表にまとめたい場面は多くあります。
本記事では、Pythonのopenpyxl
とpathlib
を活用して、フォルダ内の複数ブックからセル値を取得し、新しいブックに一覧化する方法をご紹介いたします。
目次
使用ライブラリ
以下のライブラリを使用します。未インストールの場合は、先に以下を実行してください。
pip install openpyxl
サンプル構成と前提
- 各部署のExcelファイルが
./data_files/
フォルダに格納されている - 各ファイルには「情報入力」シートが存在し、その
D2
セルに部署名、D3
セルに担当者名が入力されている - 新しく作成するブックに、一覧としてまとめたい
Pythonコード:複数ブックから情報を抽出してまとめる
from pathlib import Path
from openpyxl import load_workbook, Workbook
# 一覧表の新規作成
summary_book = Workbook()
summary_sheet = summary_book.active
summary_sheet.title = "統合一覧"
# 見出し設定
summary_sheet["B2"] = "所属部署"
summary_sheet["C2"] = "担当者名"
# 対象フォルダのパスを指定
data_folder = Path('./data_files')
# ファイルごとに処理
for index, excel_file in enumerate(data_folder.glob("*.xlsx")):
source_book = load_workbook(excel_file, read_only=True)
source_sheet = source_book["情報入力"]
output_row = index + 3 # 行番号(3行目以降に出力)
# D2(部署名)と D3(氏名)を読み込んで出力
summary_sheet[f"B{output_row}"] = source_sheet["D2"].value
summary_sheet[f"C{output_row}"] = source_sheet["D3"].value
# 一覧ファイルを保存
summary_book.save("部署一覧表.xlsx")
補足:pathlibの便利なメソッド
メソッド名 | 用途説明 |
---|---|
Path.glob("*.xlsx") | 指定した拡張子のファイルのみを抽出 |
Path.exists() | パスが存在するか確認 |
Path.is_dir() | ディレクトリかどうか確認 |
Path.is_file() | ファイルかどうか確認 |
Path.iterdir() | ディレクトリ内のすべての要素を列挙 |
Path.match("*.xlsx") | パターンに一致するか確認 |
Path.resolve() | フルパスとして取得 |
ファイル構成例(data_files フォルダ)
data_files/
├─ 部署A.xlsx
├─ 部署B.xlsx
├─ 部署C.xlsx
各ファイルの「情報入力」シートに以下のような情報があると仮定:
セル | 内容 |
---|---|
D2 | 営業部 |
D3 | 森 健太郎 |
まとめ
本記事では、Pythonを使って複数のExcelブックから特定セルを取得し、1つのファイルにまとめる手法をご紹介いたしました。
openpyxl
でセル値を読み取りpathlib
で複数ファイルを安全かつ柔軟に処理- 一覧ファイルとして新規Excelブックを作成
手作業でのコピーペースト作業を大幅に削減できますので、業務効率化にぜひお役立てください。