You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现JSON转XLSX并保存为UTF-8编码失败问题

解决JSON转Excel时带重音字符显示乱码的问题

你的问题出在手动使用openpyxl循环写入数据的环节——虽然读取JSON时的编码处理没问题,但手动逐行添加数据的过程中,字符编码的传递逻辑容易出现疏漏,导致带重音的字符(如Á)显示为�。其实完全可以利用pandas内置的to_excel方法,它会自动处理Unicode字符编码,避免乱码问题。

修正后的代码

import json
import pandas as pd
import os

caminho = "C:/Users/Braian/Documents/Área de Trabalho/Braian/VS Code/appAPI/JSON/Cliente"
lista_arquivos = os.listdir(caminho)

lista_datas = []

for arquivo in lista_arquivos:
    if ".json" in arquivo:
        data = os.path.getmtime(f'{caminho}/{arquivo}')
        lista_datas.append((data, arquivo))

lista_datas.sort(reverse=True)
ultimo_arquivo = lista_datas[0]

print("\nConvertendo seu arquivo em Json para Xlsx...")

# 读取JSON数据并生成DataFrame
with open(os.path.join(caminho, ultimo_arquivo[1]), encoding='utf-8-sig') as json_file:
    data = json.load(json_file)
    df = pd.DataFrame(data['data']['rows'])

# 直接用pandas保存为Excel,自动处理字符编码
nome_arquivo = f"{caminho}/Cliente.xlsx"
df.to_excel(nome_arquivo, index=False, engine='openpyxl')

print("\nArquivo em Xlsx foi finalizado!")

关键修改点

  • 移除了手动创建openpyxl Workbook和循环写入的代码,改用df.to_excel直接保存DataFrame,简化流程的同时确保编码处理正确
  • 添加index=False避免生成不必要的索引列
  • 指定engine='openpyxl',确保对xlsx格式的Unicode字符处理支持

额外说明

如果你的JSON文件确实是UTF-8编码(带或不带BOM),utf-8-sig的读取方式是正确的。pandas写入Excel时会自动将Unicode字符转换为Excel兼容的格式,不会出现乱码问题。

内容的提问来源于stack exchange,提问作者Braian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:07:22