はじめに

普段はあまりエクセルを使わないのだけれども、仕事でデータをエクセルで渡されて、それを整形してJSONにする必要があったのでpythonでする方法を確認。した際の備忘録

エクセルを扱うには「openpyxl」を使う

openpyxlモジュールをインストール


pip3 install openpyxl 

  1. openpyxlドキュメント

今回のやること

  1. エクセルの必要なシートの行列を読み込む
  2. 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形式にしてファイルに書き込み。