如何使用Python模块将JSON输出保存为CSV及相关文件保存问题求助
保存数据为CSV/XLSM的正确姿势&排坑指南
兄弟,别慌!你没贴出具体的报错信息和当前代码,我先给你梳理下两种格式的标准写法,以及大家常踩的坑,你可以对照自己的代码找找问题:
一、保存为CSV文件(简单无门槛)
CSV是最省心的格式,用Python内置模块或者pandas都能轻松搞定:
用内置csv模块(适合原生列表数据)
import csv # 示例数据:二维列表,第一行是表头 data = [["姓名", "年龄", "职业"], ["张三", 25, "程序员"], ["李四", 30, "设计师"]] # 关键参数:encoding避免中文乱码,newline避免空行 with open("output.csv", "w", encoding="utf-8", newline="") as f: writer = csv.writer(f) writer.writerows(data)
用pandas(适合结构化数据,一行搞定)
如果你用pandas处理数据,这行代码就够了:
import pandas as pd # 假设df是你的DataFrame对象 df = pd.DataFrame({"姓名": ["张三", "李四"], "年龄": [25, 30], "职业": ["程序员", "设计师"]}) df.to_csv("output.csv", encoding="utf-8", index=False) # index=False别把索引列存进去
常见踩坑点:
- 没加
encoding="utf-8",导致中文乱码或者保存失败 - 打开文件时漏了
newline="",CSV里会出现多余的空行 - 数据里有逗号、换行符这类特殊字符,没做转义,导致CSV格式混乱
二、保存为XLSM文件(带宏的Excel格式)
XLSM需要支持宏的格式,推荐用openpyxl配合pandas或者直接用openpyxl操作:
用pandas+openpyxl保存新的XLSM
import pandas as pd df = pd.DataFrame({"姓名": ["张三", "李四"], "年龄": [25, 30], "职业": ["程序员", "设计师"]}) # 必须指定engine为openpyxl,默认的xlwt不支持xlsm格式 df.to_excel("output.xlsm", engine="openpyxl", index=False)
给已有带宏的XLSM写入数据(保留原有宏)
如果是要修改已有的XLSM文件,一定要记得保留宏:
from openpyxl import load_workbook # 加载已有XLSM,keep_vba=True是关键,不然宏会丢失 wb = load_workbook("existing_file.xlsm", keep_vba=True) ws = wb.active # 选中当前活动工作表 # 写入数据,比如从A1开始追加行 ws.append(["姓名", "年龄", "职业"]) ws.append(["张三", 25, "程序员"]) # 保存时必须用.xlsm后缀 wb.save("updated_file.xlsm")
常见踩坑点:
- 没安装
openpyxl库,会报ModuleNotFoundError,先装:pip install openpyxl - 用了错误的engine(比如默认的xlwt),xlwt只支持旧版.xls,不支持xlsm
- 加载已有文件时没加
keep_vba=True,导致宏丢失或者保存失败 - 保存时后缀写成.xlsx,文件会无法正常打开(xlsm是专门的带宏格式)
要是你能把具体的报错提示和你当前的代码片段贴出来,我就能精准帮你定位问题啦!
内容的提问来源于stack exchange,提问作者Blab
相关产品推荐
相关产品推荐

