将无序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}")
最终导出后的结果如下:(这是将一个表放在一列之内,如果再要分表就单存储一个文件,再处理分项问题。)
打完收工,各位周末用餐愉快!