需求: 有类似下面一个 .json 文件,希望将 .json 文件转换成 excel 文件
test.json
[ { “id”: 1, “name”: “对象(obj)”, “comments”: [“aa”, “bb”, “cc”] }, { “id”: 4, “name”: “结构化(sds)”,
"comments": ["aa", "dd", "cc", "ii"]
},
...
...
{
"id": 495,
"name": "序列",
"comments": ["aa"]
}
]
#
1. 分析/思路
后续补充。。。
2. 脚本
【脚本 j2e_v1.0.py】json文件内容规律,字段都一样
import json
import openpyxl
# 读取 .json 文件
def read_json(file):
with open(file, 'r', encoding='utf8') as fr:
json_data = json.load(fr)
return json_data
# 将数据写入 excel 文件
def write_to_excel(file):
j_data = read_json(file)
j_data_length = len(j_data)
# 创建 excel 文件并获取默认的 sheet 表
wb = openpyxl.Workbook()
ws = wb.active
# 创建 excel 表头
table_title_field = list(j_data[0].keys())
for col in range(len(table_title_field)):
last_col = col + 1
ws.cell(row=1, column=last_col).value = table_title_field[col]
# 写入基本数据
for i in range(j_data_length):
each_line = j_data[i]
each_line_field = list(each_line.keys())
for j in range(len(each_line_field)):
ws.cell(row=i + 2, column=j + 1).value = str(each_line[each_line_field[j]]) # 从第二行开始写入数据
wb.save('je_v1.0.xlsx')
if __name__ == '__main__':
write_to_excel('./test.json')
【脚本 j2e_v2.0.py】json文件内容不是很规律,如有的对象中某个字段没有
import json
import openpyxl
# 读取 .json 文件
def read_json(file):
with open(file, 'r', encoding='utf8') as fr:
json_data = json.load(fr)
return json_data
# 将数据写入 excel 文件
def write_to_excel(file):
j_data = read_json(file)
j_data_length = len(j_data)
# 创建 excel 文件并确定 sheet 表
wb = openpyxl.Workbook()
ws = wb.active
# sheet_je = openpyxl.workbook().create_sheet('je') # 创建 excel 文件并在默认的 sheet 表后追加一个sheet表‘je’,在默认表前建sheet:openpyxl.workbook().create_sheet('je', 0)
# 创建表头
table_title_field = list(j_data[0].keys())
last_col = 0
for col in range(len(table_title_field)):
last_col = col + 1
ws.cell(row=1, column=last_col).value = table_title_field[col]
# 写入基本数据
for i in range(j_data_length):
each_line = j_data[i]
each_line_field = list(each_line.keys())
# 将每个对象的数据按对应的字段在每一行中填写
j = 0
while j < len(each_line_field):
# 判断每个对象字段是否有对应的列
if each_line_field[j] not in table_title_field:
table_title_field.append(each_line_field[j])
last_col += 1
ws.cell(row=1, column=last_col).value = each_line_field[j]
# 将对象的字段值写进对应列的单元格中
column_f = table_title_field.index(each_line_field[j]) + 1
ws.cell(row=i+2, column=column_f).value = str(each_line[each_line_field[j]])
j += 1
wb.save('je_v2.0.xlsx')
if __name__ == '__main__':
write_to_excel('./test.json')
2. 扩展
上面,将 json 文件转换成 excel 文件,使用的第三方库包括 json、openpyxl。先记录一些它们基本的用法。
1. json 库
2. openpyxl 库
3. 参考
- 参考文章
- 在线转换工具
- JSON to CSV Converter (强烈推荐收藏)
- JSON 转换 Excel