json文件转excel
pip install openpyxl
pip install pandas
import json
import pandas as pd
import os
from pathlib import Pathdef json_to_excel(json_path, excel_path=None):"""将JSON文件转换为Excel文件参数:json_path: JSON文件的路径excel_path: 输出Excel文件的路径,默认为与JSON文件同路径同名称,扩展名为.xlsx"""try:# 检查JSON文件是否存在if not os.path.exists(json_path):raise FileNotFoundError(f"文件不存在: {json_path}")# 如果未指定Excel路径,则使用与JSON相同的路径和名称if excel_path is None:json_dir = os.path.dirname(json_path)json_filename = os.path.splitext(os.path.basename(json_path))[0]excel_path = os.path.join(json_dir, f"{json_filename}.xlsx")# 读取JSON文件with open(json_path, 'r', encoding='utf-8') as f:data = json.load(f)# 将JSON数据转换为DataFrame# 处理不同结构的JSON数据if isinstance(data, list):# 如果JSON是列表df = pd.DataFrame(data)elif isinstance(data, dict):# 如果JSON是字典# 尝试将字典转换为适合表格形式的数据if all(isinstance(v, dict) for v in data.values()):# 如果字典的值也是字典,使用pd.DataFrame.from_dictdf = pd.DataFrame.from_dict(data, orient='index')else:# 否则转换为单行列df = pd.DataFrame(list(data.items()), columns=['Key', 'Value'])else:raise ValueError("不支持的JSON数据结构")# 保存为Excel文件df.to_excel(excel_path, index=False, engine='openpyxl')print(f"转换成功!Excel文件已保存至: {excel_path}")return Trueexcept Exception as e:print(f"转换失败: {str(e)}")return Falseif __name__ == "__main__":# 指定JSON文件路径json_file_path = r"D:\d4\a.json"# 调用转换函数json_to_excel(json_file_path)
a.json格式如下:
[{"id": 1,"a": "1"}
]
生成的excel如下: