はじめに
普段はあまりエクセルを使わないのだけれども、仕事でデータをエクセルで渡されて、それを整形してJSONにする必要があったのでpythonでする方法を確認。した際の備忘録
エクセルを扱うには「openpyxl」を使う
openpyxlモジュールをインストール
pip3 install openpyxl
今回のやること
- エクセルの必要なシートの行列を読み込む
- JSONに整えて、ファイルに書き出す
準備
とりあえず、テスト用に以下のようなエクセルファイルを用意
シート名はそのまま。ファイル名は、fruit.xlsxとした
pythonを用意
import openpyxl
import json
book = openpyxl.load_workbook('ファイルのパス')
sheets = book['Sheet1']
path_w = '書き出すファイルのパス'
for i in range(2,12):
id = sheets.cell(row=i, column=1).value
name = sheets.cell(row=i, column=2).value
status = sheets.cell(row=i, column=3).value
fruits = {
"id": id,
"name": name,
"status": status
}
with open(path_w, mode='a') as f:
f.write(json.dumps(fruits, sort_keys=False, ensure_ascii=False,indent=4))
まず、どのエクセルファイルのどのシートのデータを読み込むか指定します。
book = openpyxl.load_workbook('ファイルのパス')
sheets = book['シート名']
書き出すファイルのパスを入れておきます
path_w = '書き出すファイルのパス'
今回は範囲が決まっていたので、最初のタイトル行を飛ばして、最後の12行目までをforで範囲指定して取得。
id = sheets.cell(row=i, column=1).value
で、rowで行、columnで列のデータを取得したデータをJSON用のデータを入れ込む
with open(path_w, mode='a') as f:
f.write(json.dumps(fruits, sort_keys=False, ensure_ascii=False,indent=4))
最後にJOSN形式にしてファイルに書き込み。