python json转excel

4,220 阅读1分钟

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)