1
3

PythonでExcelファイルをjson形式へ変換

Last updated at Posted at 2024-04-02

やりたいこと

エクセルファイルに中にあるテーブルデータをjson形式へ変換したい

こんな感じのエクセルデータから

Left align Right align Center align
This This This
column column column
will will will
be be be
left right center
aligned aligned aligned

こんな感じのjsonにしたい

[{"Left align": "This", "Right align": "This", "Center align": "This"}, その他データは省略]

やり方

さっそく調べた結果をソースコードにしました!

convert.py
import json
from openpyxl import load_workbook
import sys

# コマンドからエクセルファイル名を読み取る
args = sys.argv
path = "{path}"+args[1]

# ワークシートを取得する
sheet = workbook.active

# Excelデータのカラム名を読み込む
column_names = []
for row in sheet.iter_rows(max_row=1, values_only=True):
    for column_name in row:
        column_names.append(column_name)

# ExcelデータをJSONに変換する
records = []
for row in sheet.iter_rows(min_row=2, values_only=True):
    # ここではfor文とかで回したりするほうがもっと賢明ですね~
    # まあ、いったんイメージとして書く、、、
    record = {
        column_names[0]: row[0],
        column_names[1]: row[1],
        column_names[2]: row[2],
    }
    records.append(record)

#変換後のファイルを出力
with open("{パス/jsonファイル名}", "w", encoding="utf-8") as output_json:
    output_json.writelines(json.dumps(records, ensure_ascii=False))

実行時はこのコマンドで

python convert.py エクセルファイル名

終わりに

今回はopenpyxlの公式サイトを見て各パラメータの意味合いを理解しながらソートコードを作りました!
iter_rows以外には、iter_colsなどカラムを処理する場合のメソッドが用意されていますので、今後はエクセル読み込み時の要件に合わせて適切にメソッドを選定してデータを処理したいと思います~

参考サイト

公式ドキュメントです~

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3