Python使用openpyxl批量将Excel转换为CSV文件

Theo
Theo
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍如何利用Python的openpyxl模块批量将Excel文件转换为CSV格式。程序遍历指定目录下的所有.xlsx文件,针对每个文件中的多个工作表分别生成独立的CSV文件。文件名遵循“原Excel名_工作表名.csv”的命名规则,通过嵌套循环逐行读取单元格数据并写入目标文件,实现高效的表格格式转换。

Python Excel转CSV程序概述

本文分享一个基于Python实现的Excel转CSV转换程序实例,供学习者参考。

转换需求与命名规则

具体需求如下:

  • 利用第十二章介绍的openpyxl模块,编写程序读取当前工作目录下的所有Excel文件,并将其转换为CSV格式。
  • 由于一个Excel文件可能包含多个工作表,程序需为每个工作表单独创建一个CSV文件。生成的CSV文件名格式应为<Excel文件名>_<表标题>.csv,其中<Excel文件名>指去除扩展名后的原始文件名,<表标题>取自Worksheet对象的title属性。
  • 该程序涉及多层嵌套的for循环,整体代码框架结构如下所示:

for excelFile in os.listdir('.'):
   # skip non-xlsx files, load the workbook object
   for sheetname in wb.get_sheet_names():
      #Loop through every sheet in the workbook
      sheet = wb.get_sheet_by_name(sheetname)
      # create the csv filename from the Excel filename and sheet title
      # create the csv.writer object for this csv file
      #loop through every row in the sheet
      for rowNum in range(1, sheet.max_row + 1):
         rowData = [] #append each cell to this list
         # loop through each cell in the row
         for colNum in range (1, sheet.max_column + 1):
            #Append each cell's data to rowData
         # write the rowData list to CSV file
       csvFile.close()

测试环境准备

可从htttp://nostarch.com/automatestuff/下载excelSpreadseets.zip压缩包,将其解压至程序所在的目录中。利用这些示例文件可对程序进行测试验证。

实现思路与代码逻辑

实现思路如下:

  • 基本按照题目提供的框架结构进行代码编写。
  • 需准确理解英文题意,在此基础上即可快速完成程序开发。

核心代码实现

具体代码实现如下:


#! python3
import os, openpyxl, csv
for excelFile in os.listdir('.\\CSV'): #我将解压后的excel文件放入此文件夹
  # 筛选出excel文件,创建工作表对象
  if excelFile.endswith('.xlsx'):
    wb = openpyxl.load_workbook('.\\CSV\\'+ excelFile)
    for sheetName in wb.get_sheet_names():
      #依次遍历工作簿中的工作表
      sheet = wb.get_sheet_by_name(sheetName)
      #根据excel文件名和工作表名创建csv文件名
      #通过csv.writer创建csv file对象
      basename = excelFile[0:-5] #将excel文件名进行切割,去掉文件名后缀.xlsx
      File = open('{0}_{1}.csv'.format(basename,sheetName),'w') #新建csv file对象
      csvFile = csv.writer(File) #创建writer对象
      #csvFileWriter.writerow()
      #遍历表中每行
      for rowNum in range(1,sheet.max_row+1):
        rowData = [] #防止每个单元格内容的列表
        #遍历每行中的单元格
        for colNum in range(1,sheet.max_column + 1):
          #将每个单元格数据添加到rowData
          rowData.append(sheet.cell(row = rowNum,column = colNum).value)
        csvFile.writerow(rowData)
        #将rowData列表写入到csv file
      File.close()

运行结果与扩展资源

程序运行结果展示:

如需了解更多Python相关技巧,可参考本站专题:《Python操作Excel表格技巧总结》、《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》。

希望本文所述内容能对读者的Python编程实践有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表