dataframe,使用最简便
#!/usr/bin/python3
#防止出现中文乱码
#-*- coding:utf-8 -*-
import json
import tablib
import os
def json2excel(jsfile,xlsxfile):
from openpyxl import Workbook
wb=Workbook()
ws=wb.active
# json.text文件的格式: [{"a":1},{"a":2},{"a":3},{"a":4},{"a":5}]
# 获取json数据
# 'F:\\科技2\\python测试数据\\json1.txt'
with open(jsfile, 'r', encoding='utf-8', errors='ignore') as f:
rows = json.load(f)
# 将json中的key作为header, 也可以自定义header(列名)
header = tuple([i for i in rows[0].keys()])
ws.append(tuple(header))
#data = []
# 循环里面的字典,将value作为数据写入进去
for row in rows:
body = []
for v in row.values():
body.append(v)
ws.append(tuple(body))
# 将含标题和内容的数据放到data里
# 写到文件
print('保存中...')
wb.save(xlsxfile)
def json_2_xls(json_name,xlsxfile):
# json.text文件的格式: [{"a":1},{"a":2},{"a":3},{"a":4},{"a":5}]
# 获取json数据
# 'F:\\科技2\\python测试数据\\json1.txt'
with open(json_name, 'r', encoding='utf-8', errors='ignore') as f:
rows = json.load(f)
# 将json中的key作为header, 也可以自定义header(列名)
header = tuple([i for i in rows[0].keys()])
data = []
# 循环里面的字典,将value作为数据写入进去
for row in rows:
body = []
for v in row.values():
body.append(v)
data.append(tuple(body))
# 将含标题和内容的数据放到data里
data = tablib.Dataset(*data, headers=header)
# 写到桌面
open(xlsxfile, 'wb').write(data.xls)
def json_2_xls_2(json_name,xlsxfile):#最简便
import json
import pandas as pd
data = [] # 存储每一行转化过来的Json格式的数据
with open(json_name, 'r', encoding='utf-8', errors='ignore') as f:
rows = json.load(f)
df = pd.DataFrame(rows) # 存取转换得到的结果数据集
# data = [[d['timestamp'], d['value']] for d in data_list]
# df = pd.DataFrame(data, columns=['timestamp', 'value'])
# 写入excel表格
df.to_excel(xlsxfile, sheet_name='Data', startcol=0, index=False)
###写入多个sheets
# writer = pd.ExcelWriter('a.xls')
# df1.to_excel(writer, sheet_name='sheet1', index=False)
# df2.to_excel(writer, sheet_name='sheet2', index=False)
# writer.save()
if __name__=="__main__":
jsfile='jsfile.json'
xlsxfile='txls2.xlsx'
#json2excel(jsfile,xlsxfile)
#json_2_xls(jsfile,xlsxfile)
json_2_xls_2(jsfile,xlsxfile)