52hackkey 发表于 2025-2-28 19:15

Json 转 Excle (xlsx) 格式的程序

本帖最后由 52hackkey 于 2025-2-28 19:22 编辑

因工作需要,经常需要将JSON 格式的 列表数据转换成 Excle 格式保存。
Office 中其实内置了这个功能(导入数据->来自文件->JSON 文件),但是超级不好用。
故此写了这个工具,可以一键方便的把 JSON 格式的列表文件转换成 Excle 格式的文件保存


如图,假设你有一个 格式如下图的json 格式的文件

双击运行程序,把json 格式的文件拖入命令行,即可自动转成excle



工具使用 Pyinstaller 编译打包,可在下面下载成品:

下载地址(蓝奏云):
https://iw3c.lanzoue.com/ioopm2p4m7cd


如果担心打包后的产物安全,或者想要二次开发的同学,可复制下面的源代码自行编译:


import sys,json,os
from func_timeout import func_set_timeout, FunctionTimedOut
import msvcrt
import xlsxwriter
import time
File_name = ''
@func_set_timeout(0.1)
def get_input_file(pre_str=''):
    global File_name
    File_name = pre_str
    while True:
      File_name += msvcrt.getwch()



if __name__ == '__main__':

    print('请拖入需要转换的 JSON 文件')
    first_chr = msvcrt.getwch()
    try:
      get_input_file(first_chr)
    except FunctionTimedOut:
      input_file_path = File_name.strip('"')
    print("开始转换 JSON 数据文件[%s]..." % (input_file_path))
    try:
      data = json.load(open(input_file_path,"r",encoding='utf-8'))
      if type(data) != type([]):
            print("错误,JSON 数据不是 List!")
      else:
            filename = os.path.basename(input_file_path)
            t = filename.split(".",1)
            outfilename = "./" + t + ".xlsx"
            workbook = xlsxwriter.Workbook(outfilename)
            worksheet = workbook.add_worksheet("sheet1")
            fields = ["_id"]
            for row in data:
                for key in row.keys():
                  if key not in fields:
                        fields.append(key)
            fields.sort()
         
            col_id = 0
            for field in fields:
                worksheet.write(0,col_id,field)
                col_id = col_id + 1
            row_id = 1
            col_id = 0
            for row in data:
                for field in fields:
                  if field == "_id":
                        worksheet.write(row_id,col_id,row_id+1)
                  if field in row.keys():
                        worksheet.write(row_id,col_id,row)
                  col_id = col_id + 1
                col_id = 0
                row_id = row_id + 1
            workbook.close()
            print("数据转换成功,已经保存到:" + os.path.realpath("./" + outfilename))
    except Exception as err:
      print(err)
      print("读取 文件失败,无法解析的JSON 文件")
    print("3s 后自动关闭")
    time.sleep(3)
    #msvcrt.getwch()

hailinwang 发表于 2025-3-3 16:46

gj1982612 发表于 2025-3-4 09:33

群主,可以开发个excel转json格式的工具不?

GWzrScuAQ7AhTJW 发表于 2025-3-4 11:43

{
    "code": 1,
    "data": {
      "list": [
            {

这种多级的好像支持不了
页: [1]
查看完整版本: Json 转 Excle (xlsx) 格式的程序