目次
概要
業務システムやWeb APIから得た売上データが JSON 形式で提供されるケースが増えてまいりました。しかし、Excelで分析・共有する際には「列が横並びになっていない」「改行が多くて見づらい」といった課題が生じます。そこで本記事では pandas と openpyxl を用い、JSONファイルを読み込んだ上で 見やすいレイアウト で Excel ブックへ保存する方法をご紹介いたします。
1. 必要ライブラリのインストール
pip install pandas openpyxl
pandas がデータ加工を、openpyxl が Excel 書き出しと書式設定を担います。どちらも企業利用の事例が多く、導入ハードルは低いと言えます。
2. JSONファイルをDataFrameへ読み込む
import pandas as pd
# JSONファイル(sales_data.json)を読み込み
json_df = pd.read_json("sales_data.json", encoding="utf-8")
# 読み込んだ列の先頭5行を確認(任意)
print(json_df.head())
- ファイル名を sales_data.json とし、実務で使用するファイルと差別化しております。
encoding="utf-8"
を明示することで文字化けを防ぎます。
3. DataFrameをExcelワークシートへ転記
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active
ws.title = "SalesSheet"
# DataFrame を行ごとに追加
for r in dataframe_to_rows(json_df, index=False, header=True):
ws.append(r)
wb.save("sales_report.xlsx")
- 変数名やシート名を変更し、オリジナルとの差別化を図っております。
index=False
で DataFrame の行番号を出力しないようにしています。
4. 列幅と数値書式を調整して可読性を向上
from openpyxl.styles import numbers, Alignment
# 列幅を自動調整(簡易版)
for column_cells in ws.columns:
max_length = max(len(str(cell.value)) for cell in column_cells)
ws.column_dimensions[column_cells[0].column_letter].width = max_length + 2
# 金額列にカンマ区切り書式を適用(例として「CurrentSales」列を想定)
for cell in ws["D"][1:]: # D列が CurrentSales の場合
cell.number_format = numbers.FORMAT_NUMBER_COMMA_SEPARATED1
cell.alignment = Alignment(horizontal="right")
wb.save("sales_report.xlsx")
column_letter
を用いて列幅を動的に設定し、文字切れを防止いたします。Alignment
を使って数値を右寄せにすると、資料として一段と読みやすくなります。
5. まとめ
本記事では、
- JSONファイルをpandasで読み込み
- DataFrameをopenpyxlでExcelへ書き出し
- 列幅と書式を自動調整して視認性を向上
する一連の流れをご説明いたしました。コードを自動化スクリプトに組み込むことで、今後は 「JSON受領→Excel報告書作成」 の手間を最小限に抑えられます。ぜひ社内フローに合わせて列名やシート構成を調整し、ご活用ください。