当前位置: 首页 > news >正文

将无序json数据转换为excel表格形式

        今天给过来了一个json数据,说是看不了,想让给规整一下,转化成方便查看的数据,看看有没有办法搞一下。大概找了下规律,应该表格导出后混编在一起的json数据,应该可以导出成excel表格,就试着搭了个python工程,用pandas这个库来做一下看看。

        顺便也介绍下这个pandas库,因为这个库经常在数据处理方面会用到,它是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。不光在游戏领域进行表格转换,它还是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。

具体文档可以参考Pandas 简介 | 菜鸟教程

        其实在各个语言的自带库或第三方库中,也有对应的库或者插件,对excel表格进行操作,这个几乎成为数据的基本操作之一,python中还有‌ Openpyxl ‌,xlrd 、 xlwt 、 xlutils ‌,还能写公式的‌ XlsxWriter等。

其他语言开发语言,例如golang中的excelize库,

https://pkg.go.dev/github.com/xuri/excelize/v2

Java中也有,而且还很多:‌ EasyExcel,‌ Apache POI,JXL,‌  Aspose.Cells for Java等等,Java这方面应该是最多的了,它擅长这个。

Lua中,常用的对Excel表格进行操作的库主要有两个: xlsxwriter 和 luacom 。

C#中,常用的Newtonsoft.Json是用于json的处理库,EPPlus是用于读写Excel文件的库,支持.xlsx格式。

TypeSprite、JS中,exceljs库等,导出Excel或CSV文件并处理中文汉字,功能也比较全面。

在C++中操作Excel表格,有多种库可供选择。以下是一些常用的库:

XLNT (eXcellent Library for XLSX):

简介:这是一个开源的C++库,用于读写Excel的.xlsx文件格式。它提供了丰富的API来操作Excel文件,包括读取、写入和修改单元格数据、格式设置、图表创建等。

特点:跨平台支持(Windows, Linux, macOS),易于使用,文档齐全。

链接:https://github.com/tfussell/xlnt

libxlsxwriter:

简介:这是一个用于创建Excel .xlsx文件的C库,提供了简单的API来写入数据到Excel文件。它不支持读取Excel文件,只支持创建和写入。

特点:轻量级,快速创建文件,适用于需要生成Excel报告的场景。

链接:https://github.com/jmcnamara/libxlsxwriter

OpenXLSX:

简介:这是一个基于C++11的库,用于读写Excel .xlsx文件。它提供了丰富的功能来操作Excel文件,包括但不限于单元格操作、公式计算、格式设置等。

特点:跨平台,支持多种编译器(如GCC, Clang, MSVC)。

链接:https://github.com/troldal/openxlsx

libxls:

简介:这是一个用于读写Excel .xls文件的C库。它不支持较新的.xlsx格式,但仍然在一些旧系统中被广泛使用。这是我最早接触表格转换的库,后来就是OpenXLSX基本够用了。

特点:小巧、快速,但仅支持旧的.xls格式。

链接:Redirect

Boost.Xpressive:

简介:虽然Boost库本身主要用于提供各种C++算法和数据结构,但它也包含了一个名为Boost.Xpressive的正则表达式库,可以用来解析和操作Excel文件的内容(例如解析单元格内容)。

特点:结合使用Boost.Xpressive和上述的库(如XLNT)可以增强对Excel文件内容的处理能力。

链接:Chapter 43. Boost.Xpressive

        这里我就不展开了,这些语言都用过一遍,还有些更偏门的库,各有优缺点,因为excel的确实强大,加上json的灵活,造成了再多的库都不能满足所有需求,掌握其原理,自己也可以根据工作实际需求写一个,不必求全,能胜任自己项目的就可以了。如果你是专门做这块的,那就专门去研究excel,先把自己变成一个excel大师,再做这种库的开发可能会更有效果。

        每个都能展开写个专题,懒,做得出好工具才能真正偷懒!

言归正传:

数据样本如下:

        在python工程中增加pandas库,它还有个依赖库就是openpyxl库需要安装,可以通过

pip install pandas 和 pip install openpyxl 两个命令进行安装;也可以通过vs的添加环境界面进行安装,我用的vs2019和vs2024,下面我就图文介绍下这个安装,基本一样,非常方便:

        建立一个python的应用工程:它就自带了一个python环境的设置模块,右键点击它,如下图:

        选择添加环境或者直接修改下面的已有环境都可以,因为我装了两个python环境,所以新建了一个:

        输入需要的库的名称,它自己会匹配对应的命令,然后只需要点击对应的命令行就会直接安装:

        最后检查自己的安装是否成功,在已经导入的包列表中看到这两个库的名字:

        接下来我就写一段这个库的应用,将最开始无法查看的json文本转换为excel表格,方便查看:

实现代码如下:

import sys

import json

import pandas as pd

# 1. 读取 JSON 文件

json_file_path = "E:\PythonApplication1\design.json"  # 替换为你的JSON文件路径

with open(json_file_path, 'r', encoding='utf-8') as f:

    data = json.load(f)

# 2. 统一数组长度(填充 None)

max_length = max(len(arr) for arr in data.values())  # 计算最大数组长度

for key in data:

    current_length = len(data[key])

    if current_length < max_length:

        # 填充 None 到缺失位置

        data[key] += [None] * (max_length - current_length)

# 3. 创建 DataFrame 并保存为 Excel

df = pd.DataFrame(data)

excel_file_path = 'E:\PythonApplication1\output.xlsx'  # 替换为输出 Excel 路径

df.to_excel(excel_file_path, index=False)

print(f"打完收工...处理完成!Excel 文件已保存至: {excel_file_path}")

        最终导出后的结果如下:(这是将一个表放在一列之内,如果再要分表就单存储一个文件,再处理分项问题。)

打完收工,各位周末用餐愉快!

http://www.lryc.cn/news/572793.html

相关文章:

  • 【FineDance】vis.py 硬编码路径的修复
  • 服务器手动安装并编译R环境库包:PROJ→RGDAL
  • RenderDoc抓webgl 1
  • 科技赋能民生:中建海龙为民生改善注入新动力
  • 【CS创世SD NAND征文】STM32户外无线终端管理设备的数据存储方案
  • Logback 在java中的使用
  • 力扣-169.多数元素
  • [muduo] docs | 配置教程 | EventLoop | Thread
  • python实战项目76:51job数据采集与分析
  • 14.9 AI教学系统测试全攻略:模块化调试与5大模块实战指南
  • 服务网格安全(Istio):用零信任架构重构微服务通信安全
  • 【Linux驱动开发 ---- 4.2_平台设备(Platform Devices)概述】
  • 基于深度学习的智能视频行为识别系统:技术与实践
  • 解决Windows10没有Microsoft store微软商店
  • C#学习日记
  • 局域网文件共享及检索系统
  • 在小程序中实现上下左右拖动表格
  • js调用微信支付 第二步 获取access_token ——仙盟创梦IDE
  • 多线程八股
  • Docker Swarm 与 Docker Compose 对比解析
  • 汽车整车厂如何用数字孪生系统打造“透明车间”
  • python高校工作室管理系统
  • 晨控CK-FR06与西门子PLC配置Modbus TCP通讯连接操作手册
  • Cmake入门及CMakeLists.txt 语法介绍
  • linux线程同步
  • 数据结构第八章(六)-置换选择排序和最佳归并树
  • P12894 [蓝桥杯 2025 国 Java B] 智能交通信号灯
  • 【机器学习实战笔记 12】集成学习:AdaBoost算法
  • 数字IC后端实现之Setup Violation修复案例(DataClock Tree ECO修复手段)
  • 目标检测新升级:用YOLOv8打造密度视频热力图可视化