業務引き継ぎ時に、フォルダー階層内に点在する Excel ファイルの存在を漏れなく共有したい場合がございます。本記事では pathlib でブックのフルパスを取得し、openpyxl で一覧シートを作成する手順を丁寧にご説明いたします。ヘッダー行には罫線と背景色を付与し、視認性も確保いたします。
目次
動作環境
項目 | 内容 |
---|
Python | 3.10 以上 |
利用ライブラリ | openpyxl (pip install openpyxl ) |
サンプルスクリプト
from pathlib import Path
from openpyxl import Workbook
from openpyxl.styles import Border, PatternFill, Side
# 1. 空のワークブックとシートを準備いたします。
wb_catalog = Workbook()
ws_index = wb_catalog.active
ws_index.title = "FileList"
# 2. 列幅を調整いたします。(B 列:パス、C 列:ファイル名)
ws_index.column_dimensions['B'].width = 46
ws_index.column_dimensions['C'].width = 32
# 3. 罫線と塗りつぶしを定義いたします。
thin = Side(border_style='thin', color='000000')
common_border = Border(left=thin, right=thin, top=thin, bottom=thin)
header_fill = PatternFill(fill_type='solid', fgColor='C6E0B4')
# 4. ヘッダー行を作成いたします。
headers = ('No.', 'Path', 'Filename')
for col, title in enumerate(headers, start=1):
cell = ws_index.cell(row=1, column=col, value=title)
cell.border = common_border
cell.fill = header_fill
# 5. 対象フォルダーを走査し、ファイル情報を書き込みます。
base_dir = Path('./books')
for seq, xlsx_file in enumerate(base_dir.rglob('*.xlsx'), start=1):
row = seq + 1
ws_index.cell(row=row, column=1, value=seq).border = common_border
ws_index.cell(row=row, column=2,
value=str(xlsx_file.parent)).border = common_border
ws_index.cell(row=row, column=3,
value=xlsx_file.name).border = common_border
# 6. ファイルを保存いたします。
wb_catalog.save('handover_catalog.xlsx')
コード解説
ステップ | 説明 |
---|
Path.rglob('*.xlsx') | サブフォルダーを含めて .xlsx を再帰的に検索いたします。 |
連番の付与 | enumerate(..., start=1) により 1 からの連番を自動付与いたします。 |
xslx_file.parent | 親ディレクトリーを取得し、パス列に表示いたします。 |
罫線の適用 | データ行にも同じ Border を設定し、表全体の体裁をそろえております。 |
応用アイデア
ニーズ | 実装例 |
---|
PDF も対象に含めたい | rglob('*.xlsx') を rglob('*.{xlsx,pdf}') へ変更なさってください。 |
検索対象を更新日時順に並べたい | sorted(base_dir.rglob('*.xlsx'), key=lambda p: p.stat().st_mtime) をご利用ください。 |
ハイパーリンクを付与したい | ws_index.cell(...).hyperlink = xlsx_file.as_uri() でセルから直接開けます。 |
まとめ
- pathlib と openpyxl を組み合わせることで、フォルダー階層内の Excel ファイルを自動的に検出し、一覧シートを作成できます。
- 罫線と背景色を追加することで、視認性に優れた引き継ぎ資料を短時間で作成可能です。
- 応用例を組み合わせれば、PDF など他形式のファイルを含めたより汎用的なカタログにも拡張できます。どうぞご活用ください。