当前位置: 首页 > 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.lqws.cn/news/459685.html

相关文章:

  • 一生一芯 PA2 RTFSC
  • 5.基于神经网络的时间序列预测
  • 数据库中间件ShardingSphere5
  • Vue学习笔记
  • Dify动手实战教程(进阶-知识库:新生入学指南)
  • 让大模型“更懂人话”:对齐训练(RLHF DPO)全流程实战解析
  • 《王者荣耀》系统架构深度技术解析
  • 进阶五 按键切换不同led流水效果
  • 李宏毅 《生成式人工智能导论》| 第6讲-第8讲:大语言模型修炼史
  • 关于ubuntu环境下vscode进行debug的随笔
  • 【工具教程】识别PDF中文字内容,根据文字内容对PDF批量重命名,提取识别PDF内容给图片重新命名的操作步骤和注意事项
  • 第十三章 模板
  • 机器学习流量识别(pytorch+NSL-KDD+多分类建模)
  • 自动化性能回退机制——蓝绿部署与灰度发布
  • 前端 CSS 框架:分类、选择与应用
  • 「AI高校」| 《清华大学:AI赋能教育高考志愿填报工具使用指南》
  • 新品上市 | 尺寸小且具有丰富接口的读卡器:RFID高频系列CK-FR06
  • MySQL之事务深度解析
  • django FileSystemStorage is located outside of the base path component
  • Android Studio报错:Could not move temporary workspace () to immutable location
  • NY339NY341美光固态闪存NW841NW843
  • MySQL入门初解
  • 数据分析和可视化:Py爬虫-XPath解析章节要点总结
  • 【Dify学习笔记】:RagFlow接入Dify基础教程
  • Real-World Deep Local Motion Deblurring论文阅读
  • Linux——linux的基本命令
  • ceph 自动调整 pg_num
  • 链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。附加的目标文件包括静态连接库和动态连接库。其中的启动文件是什么意思?
  • SpringMVC知识点总结
  • python自助棋牌室管理系统