Excel シートに読み込んだ数値や日付が “シリアル値” のままでは、閲覧者にとって理解しにくい場合があります。openpyxl を使用すると、セルの 表示形式 (number_format) を Python から直接設定でき、読みやすい書式に統一できます。本記事では、日付を yyyy-mm-dd
、数値を 3 桁区切り にそろえる具体例をご紹介いたします。
目次
動作環境
項目 | 内容 |
---|
Python | 3.9 以上 |
ライブラリ | openpyxl(pip install openpyxl ) |
入力ファイル例 | financial_report.xlsx |
出力ファイル例 | financial_report_formatted.xlsx |
サンプルコード
from openpyxl import load_workbook
# 1. ワークブックを読み込み
wb = load_workbook('financial_report.xlsx')
ws = wb.active
# 2. 列 E(請求日)と F(金額)の表示形式を設定
for row in ws.iter_rows(min_row=3, min_col=5, max_col=6):
# E 列(請求日)→ 日付表示
row[0].number_format = 'yyyy-mm-dd'
# F 列(金額)→ 3 桁区切り
row[1].number_format = '#,##0'
# 3. 保存
wb.save('financial_report_formatted.xlsx')
コードのポイント
処理 | 説明 |
---|
iter_rows(min_row=3, min_col=5, max_col=6) | 3 行目以降の E 列~F 列 を対象にループします。 |
row[0].number_format | ループ内の E 列セル (row[0]) に日付形式を設定します。 |
row[1].number_format | F 列セル (row[1]) に 3 桁区切りの数値書式を設定します。 |
主な表示形式サンプル
用途 | number_format | 表示例 |
---|
日付 (年月日) | 'yyyy-mm-dd' | 2025-08-01 |
日本式日付 | 'yyyy"年"m"月"d"日"' | 2025年8月1日 |
時間 (時:分) | 'hh:mm' | 14:30 |
3 桁区切り整数 | #,##0 | 123,456 |
2 桁小数 | #,##0.00 | 1,234.56 |
パーセント表示 | 0.0% | 12.3% |
よくある質問
質問 | 回答 |
---|
既存の書式が残っている場合はどうなりますか。 | number_format を再設定すると、既存の表示形式は上書きされます。 |
数値の書式が反映されないことがあります。 | セル値が文字列型になっていると書式が適用されません。数値型・日付型に変換してから設定してください。 |
シート全体に適用できますか。 | iter_rows() の範囲を広げれば一括設定できますが、不要な列まで変更しないよう注意が必要です。 |
まとめ
number_format
を活用すると 日付や金額を人間が読みやすい形に統一 できます。
iter_rows()
と組み合わせれば、対象範囲を一度に書式変更でき、作業効率が向上します。
- 表示形式を整えることで、データの誤読や確認漏れを防止し、レポート品質が向上します。