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

Python3.11将CSV导入Excel工作表报错求助:NameError与AttributeError

解决方案

错误原因分析

  • NameError('f_name'未定义):代码中使用了变量f_name但未提前定义,大概率是遍历CSV文件时未正确提取文件名,或是变量名拼写错误。
  • AttributeError(Workbook无add_sheet属性):混淆了Excel操作库的API——add_sheet是xlwt库(仅支持xls格式)的方法,若你用的是openpyxl(支持xlsx格式),创建新工作表的正确方法是create_sheet()。

可行代码示例

下面提供两种常用实现方式,选一种适配你的需求:

方式1:使用pandas + openpyxl(简洁高效)

import os
import pandas as pd
from openpyxl import load_workbook

# 配置路径
csv_dir = "你的CSV文件所在文件夹路径"
excel_path = "目标Excel文件路径.xlsx"

# 遍历文件夹下所有CSV文件
for filename in os.listdir(csv_dir):
    if filename.endswith(".csv"):
        # 提取文件名(不含后缀)作为工作表名
        sheet_name = os.path.splitext(filename)[0]
        csv_path = os.path.join(csv_dir, filename)
        
        # 读取CSV数据
        df = pd.read_csv(csv_path)
        
        # 写入Excel:若文件存在则追加,不存在则新建
        with pd.ExcelWriter(excel_path, engine="openpyxl", mode="a", if_sheet_exists="replace") as writer:
            df.to_excel(writer, sheet_name=sheet_name, index=False)

方式2:使用openpyxl原生方法(手动控制细节)

import os
import csv
from openpyxl import Workbook, load_workbook

csv_dir = "你的CSV文件所在文件夹路径"
excel_path = "目标Excel文件路径.xlsx"

# 加载或创建Excel工作簿
try:
    wb = load_workbook(excel_path)
except FileNotFoundError:
    wb = Workbook()
    # 删除默认创建的Sheet(可选)
    if "Sheet" in wb.sheetnames:
        wb.remove(wb["Sheet"])

# 遍历CSV文件
for filename in os.listdir(csv_dir):
    if filename.endswith(".csv"):
        sheet_name = os.path.splitext(filename)[0]
        # 若工作表已存在,可选择删除或跳过
        if sheet_name in wb.sheetnames:
            wb.remove(wb[sheet_name])
        # 创建新工作表
        ws = wb.create_sheet(title=sheet_name)
        csv_path = os.path.join(csv_dir, filename)
        
        # 读取CSV内容并写入工作表
        with open(csv_path, "r", encoding="utf-8") as f:
            reader = csv.reader(f)
            for row in reader:
                ws.append(row)

# 保存工作簿
wb.save(excel_path)

注意事项

  • 确保安装了所需依赖:pip install pandas openpyxl(方式1)或pip install openpyxl(方式2)。
  • 若你的目标Excel是xls格式,需改用xlwt和xlrd库,此时创建工作表用add_sheet(),但xls格式单工作表最多支持65536行,注意数据量限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:07:40