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

Python 3.6使用Pandas循环转CSV到Excel报错,求问题排查

代码报错排查与修复方案

嘿,我帮你揪出这段代码里的几个问题啦,正是这些点导致了运行报错:

关键错误点分析

  • 同时混用两个Excel操作工具:你同时用了xlsxwriter.Workbook和pandas的ExcelWriter来操作同一个文件,这俩工具会争夺文件控制权,直接导致写入异常。ExcelWriter内部会自己创建并管理工作簿,不需要手动再创建wb对象。
  • 大小写拼写错误:Python对大小写敏感,index=FALSE里的FALSE是大写的,Python会把它当成未定义的变量,直接抛出NameError。正确写法是小写的index=False。
  • 工作表名称写死:循环里的sheet_name='sh_sh_users'是固定值,不管循环到users还是account的csv,都往同一个工作表写,既不符合你要创建sh_users、sh_account的预期,还会导致重复写入的问题。
  • 操作已关闭的文件:with代码块结束后,ExcelWriter会自动关闭文件,这时候你再调用wb.add_worksheet,对应的文件句柄已经失效,肯定会报错。

修正后的代码

import pandas as pd
from pandas.io.excel import ExcelWriter

def create_excel_from_csv():
    arr = ['users', 'account']
    dest_filename = r'transformed.xlsx'
    
    # 用ExcelWriter统一管理工作簿,指定engine为xlsxwriter来支持高级操作
    with ExcelWriter(dest_filename, engine='xlsxwriter') as ew:
        for item in arr:
            sheet_name = f'sh_{item}'
            # 读取csv并写入对应工作表,修正index参数的大小写
            pd.read_csv(f'{item}.csv').to_excel(ew, index=False, sheet_name=sheet_name, encoding='utf-8')
        
        # 通过ew.book获取xlsxwriter的工作簿对象,在文件打开状态下添加隐藏工作表
        wb = ew.book
        hidden_sheet = wb.add_worksheet('Sheet')
        hidden_sheet.hide()

create_excel_from_csv()

修正说明

  1. 移除了没用的openpyxl、CSV等导入,简化代码结构;用pd作为pandas的别名,符合Python社区的通用写法。
  2. 只保留ExcelWriter来管理文件,通过ew.book获取xlsxwriter的工作簿对象,避免工具冲突。
  3. 动态生成工作表名称,每个csv文件对应到sh_users、sh_account工作表,符合你的初始需求。
  4. 在with代码块内部完成所有工作表操作,确保文件处于打开状态,避免操作已关闭文件的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:31:06