如何使用openpyxl将CSV文件内容写入Excel指定工作表
解决方案
原有代码错误点
- 工作表引用逻辑错误:新建工作簿默认生成的工作表名为
Sheet,你将工作表名列表wb.sheetnames赋值给TOP3变量,后续直接调用wb["TOP3"]无法匹配到存在的工作表,且你的需求是写入metrics工作表,无需引用不存在的TOP3表 - 保存时机错误:在写入内容前就执行了
wb.save,后续对工作表的修改没有再次触发保存操作,不会写入最终文件 - 单元格写入逻辑错误:循环逻辑会把整行内容赋值给A列的单个单元格,且行号、列号的计算完全错误,无法按CSV原有行列结构写入
- 语法错误:
with语句前存在多余缩进,会直接触发语法报错
正确实现代码
import openpyxl import csv # 1. 创建工作簿 wb = openpyxl.Workbook() # 删除默认生成的Sheet工作表(不需要删除可以注释掉该行) wb.remove(wb["Sheet"]) # 2. 创建目标工作表 ws = wb.create_sheet(title="metrics") # 3. 读取CSV并写入工作表 with open("metrics.csv", "r", encoding="utf-8") as f: reader = csv.reader(f) # 逐行读取CSV内容,直接追加到工作表末尾 for row in reader: ws.append(row) # 4. 所有修改完成后统一保存工作簿 wb.save(filename="Test.xlsx")
补充说明
- 如果你的CSV文件是GBK编码(比如Windows系统下导出的CSV),可以把
encoding="utf-8"改成encoding="gbk"避免中文乱码 append()方法会自动将传入的列表按顺序写入当前工作表最后一行的每一列,不需要手动计算行列号,完美适配CSV的行结构- 所有对工作簿的修改完成后再执行保存操作即可,不需要提前保存
内容的提问来源于stack exchange,提问作者Maths12
相关产品推荐
相关产品推荐

