当前位置: 首页 > news >正文

【Python办公】Python将CSV转Excel的几种方式

目录

    • Python将CSV转Excel的几种方式
    • 概述
    • 方式一:pandas(最简洁)
      • 特点
      • 实现代码
      • 适用场景
    • 方式二:openpyxl(最灵活)
      • 特点
      • 实现代码
      • 适用场景
    • 方式三:xlsxwriter(高性能)
      • 特点
      • 实现代码
      • 适用场景
    • 方式四:csv模块 + openpyxl(精细控制)
      • 特点
      • 实现代码
      • 适用场景
    • 方式五:pandas + 样式美化(专业级)
      • 特点
      • 实现代码
    • 性能对比
    • 库的安装
    • 常见问题解决
      • Q1: 编码问题导致乱码?
      • Q2: 大文件内存溢出?
      • Q3: 保留原始数据类型?
      • Q4: 需要多个CSV合并为一个Excel?
    • 最佳实践建议
    • 总结
    • 参考资源

专栏导读
  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
  • 🏳️‍🌈 个人博客主页:请点击——> 个人的博客主页 求收藏
  • 🏳️‍🌈 Github主页:请点击——> Github主页 求Star⭐
  • 🏳️‍🌈 知乎主页:请点击——> 知乎主页 求关注
  • 🏳️‍🌈 CSDN博客主页:请点击——> CSDN的博客主页 求关注
  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏 求订阅
  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏 求订阅
  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏 求订阅
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • ❤️ 欢迎各位佬关注! ❤️

Python将CSV转Excel的几种方式

概述

在日常数据处理工作中,CSV(逗号分隔值)文件是最常见的数据格式之一。但有时我们需要将CSV文件转换为Excel格式以便进行更复杂的数据操作、可视化和共享。Python提供了多种成熟的库来完成这个任务,各有优劣。本文将深入介绍5种实现方式,帮助你选择最适合的方案。


方式一:pandas(最简洁)

特点

  • ✅ 代码最简洁,仅需一行
  • ✅ 功能完整,支持多sheet转换
  • ✅ 性能优秀,适合大文件
  • ⚠️ 需要openpyxl或xlsxwriter作为引擎

实现代码

importpandasaspd# 基础用法df=pd.read_csv('data.csv')df.to_excel('output.xlsx',index=False)# 指定sheet名称df.to_excel('output.xlsx',sheet_name='数据',index=False)# 多sheet写入withpd.ExcelWriter('output.xlsx')aswriter:df1.to_excel(writer,sheet_name='Sheet1',index=False)df2.to_excel(writer,sheet_name='Sheet2',index=False)

适用场景

  • 数据分析和处理
  • 批量转换多个CSV文件
  • 需要保留数据格式

方式二:openpyxl(最灵活)

特点

  • ✅ 功能最全面,支持格式化、公式、图表
  • ✅ 适合复杂的Excel操作
  • ✅ 可修改现有Excel文件
  • ⚠️ 性能稍低,代码更复杂

实现代码

importcsvfromopenpyxlimportWorkbookfromopenpyxl.stylesimportFont,PatternFill# 创建工作簿wb=Workbook()ws=wb.active ws.title='数据'# 从CSV读取数据withopen('data.csv','r',encoding='utf-8')asf:csv_reader=csv.reader(f)forrow_idx,rowinenumerate(csv_reader,1):forcol_idx,valueinenumerate(row,1):cell=ws.cell(row=row_idx,column=col_idx,value=value)# 第一行格式化为标题ifrow_idx==1:cell.font=Font(bold=True,color='FFFFFF')cell.fill=PatternFill(start_color='4472C4',end_color='4472C4',fill_type='solid')# 自适应列宽forcolumninws.columns:max_length=0column_letter=column[0].column_letterforcellincolumn:max_length=max(max_length,len(str(cell.value)))ws.column_dimensions[column_letter].width=min(max_length+2,50)wb.save('output.xlsx')

适用场景

  • 需要自定义格式和样式
  • 添加公式或图表
  • 修改现有Excel文件

方式三:xlsxwriter(高性能)

特点

  • ✅ 性能最快,特别是大文件
  • ✅ 功能丰富,支持图表
  • ✅ 只写不读(写入速度快)
  • ⚠️ 不能修改现有文件,不支持读操作

实现代码

importcsvimportxlsxwriter# 创建Excel文件workbook=xlsxwriter.Workbook('output.xlsx')worksheet=workbook.add_worksheet('数据')# 定义格式header_format=workbook.add_format({'bold':True,'bg_color':'#4472C4','font_color':'white','border':1})data_format=workbook.add_format({'border':1,'align':'left','valign':'vcenter'})# 读取CSV并写入Excelwithopen('data.csv','r',encoding='utf-8')asf:csv_reader=csv.reader(f)forrow_idx,rowinenumerate(csv_reader):forcol_idx,valueinenumerate(row):ifrow_idx==0:worksheet.write(row_idx,col_idx,value,header_format)else:worksheet.write(row_idx,col_idx,value,data_format)# 冻结首行worksheet.freeze_panes(1,0)workbook.close()

适用场景

  • 处理超大CSV文件(百万行+)
  • 需要快速转换
  • 简单的格式需求

方式四:csv模块 + openpyxl(精细控制)

特点

  • ✅ 对CSV解析控制最细致
  • ✅ 处理特殊字符和编码
  • ✅ 结合openpyxl可实现完整功能
  • ⚠️ 代码相对冗长

实现代码

importcsvfromopenpyxlimportWorkbookfromopenpyxl.utilsimportget_column_letterdefcsv_to_excel(csv_file,excel_file,sheet_name='Sheet1',encoding='utf-8'):""" 将CSV转换为Excel 参数: csv_file: CSV文件路径 excel_file: 输出Excel文件路径 sheet_name: Excel sheet名称 encoding: 文件编码 """wb=Workbook()ws=wb.active ws.title=sheet_namewithopen(csv_file,'r',encoding=encoding)asf:csv_reader=csv.reader(f)forrow_idx,rowinenumerate(csv_reader,1):forcol_idx,valueinenumerate(row,1):ws.cell(row=row_idx,column=col_idx,value=value)wb.save(excel_file)print(f"✅ 转换完成:{excel_file}")# 使用示例csv_to_excel('data.csv','output.xlsx')

适用场景

  • 需要处理特殊编码
  • 自定义数据验证逻辑
  • 复杂的CSV结构

方式五:pandas + 样式美化(专业级)

特点

  • ✅ 结合pandas和openpyxl的最佳实践
  • ✅ 代码简洁且功能完整
  • ✅ 输出专业美观
  • ✅ 适合商业场景

实现代码

importpandasaspdfromopenpyxlimportload_workbookfromopenpyxl.stylesimportFont,PatternFill,Alignment,Border,Sidedefcsv_to_excel_pro(csv_file,excel_file,sheet_name='Sheet1'):""" 将CSV转换为格式化的Excel(专业级) """# 第一步:使用pandas读取CSVdf=pd.read_csv(csv_file)# 第二步:用pandas写入Exceldf.to_excel(excel_file,sheet_name=sheet_name,index=False)# 第三步:使用openpyxl美化样式wb=load_workbook(excel_file)ws=wb.active# 定义样式header_fill=PatternFill(start_color='366092',end_color='366092',fill_type='solid')header_font=Font(bold=True,color='FFFFFF',size=12)header_alignment=Alignment(horizontal='center',vertical='center',wrap_text=True)border=Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'),bottom=Side(style='thin'))# 应用样式到所有单元格forrowinws.iter_rows(min_row=1,max_row=ws.max_row,min_col=1,max_col=ws.max_column):forcellinrow:cell.border=border cell.alignment=Alignment(horizontal='left',vertical='center',wrap_text=True)# 特殊处理头行ifcell.row==1:cell.fill=header_fill cell.font=header_font cell.alignment=header_alignment# 自适应列宽forcolumninws.columns:max_length=0column_letter=column[0].column_letterforcellincolumn:try:iflen(str(cell.value))>max_length:max_length=len(str(cell.value))except:passadjusted_width=min(max_length+2,50)ws.column_dimensions[column_letter].width=adjusted_width# 冻结首行ws.freeze_panes='A2'wb.save(excel_file)print(f"✅ 专业级转换完成:{excel_file}")print(f"📊 数据量:{len(df)}行 ×{len(df.columns)}列")# 使用示例csv_to_excel_pro('data.csv','output.xlsx',sheet_name='数据')

性能对比

方式速度功能易用性推荐场景
pandas⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐日常数据分析
openpyxl⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐复杂格式需求
xlsxwriter⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐超大文件处理
csv + openpyxl⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐特殊需求
pandas + 美化⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐专业级报告

库的安装

# pandas(包含Excel支持)pipinstallpandas openpyxl# 仅xlsxwriterpipinstallxlsxwriter# 仅openpyxlpipinstallopenpyxl

常见问题解决

Q1: 编码问题导致乱码?

# 使用encoding参数指定编码df=pd.read_csv('data.csv',encoding='gbk')# 或 utf-8, gb2312

Q2: 大文件内存溢出?

# 方案1:使用xlsxwriter(流式写入)# 方案2:分块处理chunks=pd.read_csv('data.csv',chunksize=10000)forchunkinchunks:chunk.to_excel('output.xlsx',mode='a')

Q3: 保留原始数据类型?

# 指定dtypedf=pd.read_csv('data.csv',dtype={'ID':str,'金额':float})

Q4: 需要多个CSV合并为一个Excel?

importglobimportpandasaspd# 读取所有CSV文件csv_files=glob.glob('*.csv')withpd.ExcelWriter('merged.xlsx')aswriter:forcsv_fileincsv_files:df=pd.read_csv(csv_file)sheet_name=csv_file.replace('.csv','')df.to_excel(writer,sheet_name=sheet_name,index=False)

最佳实践建议

  1. 选择合适的库

    • 日常使用:优先pandas(简洁高效)
    • 格式复杂:选用openpyxl(功能完整)
    • 超大文件:使用xlsxwriter(性能最优)
  2. 数据验证

    # 转换前检查assertnotdf.isnull().any().any(),"存在空值"assertlen(df)>0,"数据为空"
  3. 错误处理

    try:df=pd.read_csv('data.csv')df.to_excel('output.xlsx',index=False)exceptFileNotFoundError:print("❌ 文件不存在")exceptExceptionase:print(f"❌ 转换失败:{e}")
  4. 日志记录

    importlogging logging.basicConfig(level=logging.INFO)logger=logging.getLogger(__name__)logger.info(f"成功转换{len(df)}行数据")

总结

方案优先级原因
pandas⭐⭐⭐⭐⭐简洁、高效、功能足够
openpyxl⭐⭐⭐⭐需要复杂格式时
xlsxwriter⭐⭐⭐⭐超大文件时

建议方案:在大多数场景下,使用pandas + openpyxl的组合方案(方式五)能够提供最好的平衡——既简洁易用,又能生成专业、美观的输出。


参考资源

  • Pandas官方文档
  • openpyxl文档
  • xlsxwriter文档

更新于: 2026年4月
作者: Python数据处理团队

结尾
  • 希望对初学者有帮助;致力于办公自动化的小小程序员一枚
  • 希望能得到大家的【❤️一个免费关注❤️】感谢!
  • 求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍
  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏
  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏
  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

http://www.cnnetsun.cn/news/1796954.html

相关文章:

  • 所谓项目管理,到底是什么?管什么?理什么?十年项目经理亲身经验总结
  • 快速上手LongCat动物百变秀:从安装到出图完整流程
  • 云容笔谈保姆级教学:从‘云容笔谈’命名溯源,理解东方美学算法设计哲学
  • Qwen3-VL-WEBUI场景应用:电商商品识别、教学视频摘要、前端开发
  • RexUniNLU与VSCode插件开发:智能代码注释生成工具
  • 告别手动输入!LaTeX公式一键粘贴到Word的终极解决方案
  • Coze-Loop赋能MySQL数据库优化:索引智能推荐系统
  • 万物识别镜像作品集:从日常物品到专业设备,识别效果一览
  • Node.js后端调用PyTorch模型:基于PyTorch 2.8镜像构建AI服务
  • 女生养生不偷懒,常备正宗乌鸡膏膏方
  • Phi-4-mini-reasoning轻量模型优势:小体积大能力的128K上下文实证
  • YOLOFuse实战体验:快速测试预置数据,查看融合检测可视化结果
  • 大模型部署神器SGLang:3步实现高并发推理,小白也能轻松搞定
  • 从安装到生成:Fish-Speech 1.5完整使用教程,手把手教你玩转TTS
  • 游戏手柄的魔法变身术:用ViGEmBus解锁Windows终极游戏兼容性
  • 低成本运行OpenClaw:Qwen3.5-9B模型量化与显存优化方案
  • 专业天猫代运营,杭州亿馨全平台托管运营,精准提效品牌增长
  • [具身智能-322]:词向量的含义与发展历史、趋势
  • 【限时开放】微软MVP团队内部使用的.NET 11 AI推理效能评估矩阵(含12维指标评分卡+自动压测脚本),仅剩最后87个企业授权席位
  • 市集同质化的破局之道:巨有科技AI引流+智慧运营,打造五一爆款IP
  • 企业品牌如何应对“按键伤企”?Infoseek AI中台技术解析与实践
  • 智能邮件秘书:OpenClaw+千问3.5-35B-A3B-FP8自动处理工作邮件
  • 文字情绪一目了然:像素心智情绪解码器快速上手指南
  • G-Helper深度解析:解锁华硕笔记本性能管理的全方位解决方案
  • GLM-4.1V-9B-Base与Proteus联调:可视化电路仿真结果分析
  • Stable Diffusion写实神器Realistic Vision V5.1:零基础入门教程,手把手教你生成高清人像
  • Agent智能体开发:基于万象熔炉·丹青幻境构建自主任务执行系统
  • claude code、codex双 AI 协同论文写作撰写|“数据分析→论文初稿→交叉审稿“
  • Phi-3-mini-4k-instruct-gguf自动化办公:复杂Excel公式(如VLOOKUP跨表匹配)解释与替代方案
  • 从“自动化”到“自主化”:工业AI正在改变什么?