在日常工作中处理多个 Excel 文件并将它们合并为一个文件常常是数据分析、报告生成等工作的必要步骤。对于数据分析师、业务人员以及任何需要处理大量 Excel 数据的人来说这是一项常见且繁琐的任务。与其手动复制粘贴不同工作表中的数据不如使用 Python 自动化这一过程既省时又高效。本文将介绍两种使用 Python 合并 Excel 文件的方法。这些方法可以帮助您简化合并过程尤其是在处理大数据集时节省大量的时间和精力。前提条件要通过编程方式操作 Excel 文件您需要一个支持 Excel 文件处理的库。在本篇文章中我们使用 Spire.XLS for Python这是一个可以读取、修改和保存 Excel 文件的 Python 库且不依赖于 Microsoft Excel。您可以使用以下命令通过 pip 安装该库1pipinstallspire.xls安装完成后您就可以在 Python 中操作 Excel 文件通过 API 提供的样式相关属性控制单元格对齐、文本旋转等功能。方法一将多个 Excel 文件合并成一个工作簿多个工作表这种方法将多个 Excel 文件合并为一个工作簿并保留每个文件中的原始工作表。适用于您希望保留文件原有结构同时又需要将多个文件合并到一个工作簿中的情况。代码示例1234567891011121314151617181920212223242526272829303132importosfromspire.xlsimport*# 存放要合并的 Excel 文件的文件夹input_folder./sample_files# 合并后的工作簿文件名output_filemerged_workbook.xlsx# 初始化合并的工作簿merged_workbookNone# 遍历输入文件夹中的所有文件forfilenameinos.listdir(input_folder):# 只处理 .xls 或 .xlsx 格式的 Excel 文件iffilename.endswith(.xlsx)orfilename.endswith(.xls):file_pathos.path.join(input_folder, filename)# 加载当前的 Excel 文件source_workbookWorkbook()source_workbook.LoadFromFile(file_path)ifmerged_workbookisNone:# 第一个文件作为基础合并工作簿merged_workbooksource_workbookelse:# 后续文件将其工作表复制到合并工作簿中foriinrange(source_workbook.Worksheets.Count):sheetsource_workbook.Worksheets.get_Item(i)merged_workbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)# 将合并后的工作簿保存到指定的文件merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)工作原理设置文件夹路径指定存放 Excel 文件的文件夹input_folder。遍历文件脚本会检查文件夹中的每个文件确保它们是.xls或.xlsx格式的文件。加载工作簿对于每个文件脚本将其加载到Workbook对象中。合并工作表第一个文件初始化了merged_workbook后续文件的工作表会被复制到这个工作簿中。保存输出最后合并后的工作簿会保存到指定的文件。输出最终输出将是一个名为 ​​merged_workbook.xlsx​​ 的 Excel 文件包含了所有 Excel 文件的工作表。方法二将多个 Excel 文件合并到一个工作表中在这种方法中我们将多个 Excel 文件的数据合并到一个工作表中。这种方法非常适合将不同工作表中的数据合并为一个工作表数据按文件顺序依次排列。代码示例12345678910111213141516171819202122232425262728293031323334353637383940414243importosfromspire.xlsimport*# 存放要合并的 Excel 文件的文件夹input_folder./excel_worksheets# 合并后的工作簿文件名output_filemerged_into_one_sheet.xlsx# 创建一个新的工作簿来存放合并的数据merged_workbookWorkbook()# 使用新工作簿中的第一个工作表作为目标工作表merged_sheetmerged_workbook.Worksheets[0]# 初始化开始复制数据的行current_row1# 遍历输入文件夹中的所有文件forfilenameinos.listdir(input_folder):# 只处理 .xls 或 .xlsx 格式的 Excel 文件iffilename.endswith(.xlsx)orfilename.endswith(.xls):file_pathos.path.join(input_folder, filename)# 加载当前的 Excel 文件workbookWorkbook()workbook.LoadFromFile(file_path)# 获取当前工作簿的第一个工作表sheetworkbook.Worksheets[0]# 获取工作表中已使用的范围source_rangesheet.Range# 设置目标工作表中的复制范围从当前行开始dest_rangemerged_sheet.Range[current_row,1]# 将数据从源范围复制到目标范围source_range.Copy(dest_range)# 更新 current_row确保不会覆盖已复制的数据current_rowsheet.LastRow# 将合并后的工作簿保存到指定的输出文件merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)工作原理初始化工作簿创建一个新的工作簿来存放所有合并的数据。遍历文件像方法一一样脚本会遍历文件夹中的所有 Excel 文件。复制数据对于每个文件脚本将其第一个工作表的数据复制到目标工作表中。更新行索引current_row用来确保每个文件的数据不会覆盖自动跳到下一个可用的行。保存输出将合并后的数据保存到merged_into_one_sheet.xlsx文件中。输出结果将是一个工作表包含了来自所有 Excel 文件的数据数据按文件顺序排列。总结将多个 Excel 文件合并为一个文件是一个常见的任务尤其是当您需要处理大量文件时手动操作非常繁琐。使用 Python 和 Spire.XLS 库您可以轻松地自动化这一过程从而节省大量时间和精力。方法一适合当您希望保留每个文件的结构并将其工作表保留在独立标签中的场景。方法二更适合将多个工作表的数据合并到一个工作表中便于汇总或分析信息。这两种方法都可以根据您的需求进行自定义设置好之后它们将极大地提升您的工作效率尤其是在处理多个 Excel 文件时。