json文件转excel

bash 复制代码
pip install openpyxl
pip install pandas
bash 复制代码
import json
import pandas as pd
import os
from pathlib import Path

def 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_dict
                df = 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 True
        
    except Exception as e:
        print(f"转换失败: {str(e)}")
        return False

if __name__ == "__main__":
    # 指定JSON文件路径
    json_file_path = r"D:\d4\a.json"
    
    # 调用转换函数
    json_to_excel(json_file_path)
    

a.json格式如下:

bash 复制代码
[
    {
        "id": 1,
        "a": "1"
    }
]

生成的excel如下:

相关推荐
兮动人34 分钟前
Jackson空值序列化优化:打造优雅的JSON响应
json
lskblog12 小时前
PHP中正确处理HTTP响应:从原始响应到JSON数组的完整指南
http·json·php·laravel
課代表13 小时前
Excel VBA 为数据赋予随机浅色标记
excel·vba·可视化·条件格式·标记·对比·随机
Kiyra13 小时前
阿里云 OSS + STS:安全的文件上传方案
网络·人工智能·安全·阿里云·系统架构·云计算·json
kylezhao201917 小时前
C#上位机开发数据持久化:excel报表导入导出
开发语言·c#·excel
悟能不能悟18 小时前
springboot controller返回的是HttpServletResponse成功返回excel文件流,失败就返回失败参数
spring boot·后端·excel
逛街的猫啊1 天前
【AI 专栏】JSON-RPC
ai·rpc·json
期待のcode1 天前
Jackson
java·spring boot·json
野比带雄2 天前
対excel时间格式的理解
excel
木风小助理2 天前
在 Spring Boot 中实现 JSON 字段的蛇形命
spring boot·后端·json