PythonでJSONデータをExcelに整形出力する手順

目次

概要

業務システムやWeb APIから得た売上データが JSON 形式で提供されるケースが増えてまいりました。しかし、Excelで分析・共有する際には「列が横並びになっていない」「改行が多くて見づらい」といった課題が生じます。そこで本記事では pandasopenpyxl を用い、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. まとめ

本記事では、

  1. JSONファイルをpandasで読み込み
  2. DataFrameをopenpyxlでExcelへ書き出し
  3. 列幅と書式を自動調整して視認性を向上

する一連の流れをご説明いたしました。コードを自動化スクリプトに組み込むことで、今後は 「JSON受領→Excel報告書作成」 の手間を最小限に抑えられます。ぜひ社内フローに合わせて列名やシート構成を調整し、ご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次