如何导入并合并多个含同名工作表的Excel文件
合并多个Excel文件的同名工作表
以下提供两种实用方法,帮你把多个Excel文件里的同名工作表分别合并到一个新文件的对应工作表中:
方法一:Python脚本(Pandas + OpenPyXL)
适合有基础编程经验的用户,高效且易扩展。
- 先安装依赖包:
pip install pandas openpyxl
- 复制以下代码,替换文件夹路径后运行:
import pandas as pd import os # 替换为你的Excel文件所在文件夹的实际路径 folder_path = "C:/你的文件夹路径" # 要合并的工作表名称列表 target_sheets = ["Studentname", "studentdivision", "studentmarks"] # 创建结果文件写入对象 with pd.ExcelWriter("合并后的学生数据.xlsx", engine="openpyxl") as writer: for sheet_name in target_sheets: combined_data = pd.DataFrame() # 遍历文件夹下所有Excel文件 for filename in os.listdir(folder_path): if filename.endswith(".xlsx") and not filename.startswith("~$"): file_path = os.path.join(folder_path, filename) # 读取当前文件的指定工作表 df = pd.read_excel(file_path, sheet_name=sheet_name) # 追加数据到合并表 combined_data = pd.concat([combined_data, df], ignore_index=True) # 将合并后的数据写入结果文件的对应工作表 combined_data.to_excel(writer, sheet_name=sheet_name, index=False) print("合并完成,结果已保存为'合并后的学生数据.xlsx'")
注意:
- 确保所有文件的对应工作表列结构完全一致,否则会出现数据错位
- 代码会自动跳过Excel临时文件(以
~$开头的文件)
方法二:Excel VBA宏
适合不熟悉编程的用户,直接在Excel内操作。
- 打开一个空白Excel文件,按
Alt + F11打开VBA编辑器 - 右键点击左侧的工作簿名称 → 插入 → 模块,粘贴以下代码:
Sub 合并同名工作表() Dim 目标工作簿 As Workbook Dim 源工作簿 As Workbook Dim 目标工作表 As Worksheet Dim 源工作表 As Worksheet Dim 文件夹路径 As String Dim 文件名 As String Dim 起始行 As Long Dim 表名 As Variant ' 替换为你的文件所在文件夹路径,末尾必须加\ 文件夹路径 = "C:/你的文件夹路径/" ' 定义要合并的工作表名称 表名 = Array("Studentname", "studentdivision", "studentmarks") Set 目标工作簿 = Workbooks.Add For Each 名称 In 表名 ' 创建目标工作表 Set 目标工作表 = 目标工作簿.Sheets.Add(After:=目标工作簿.Sheets(目标工作簿.Sheets.Count)) 目标工作表.Name = 名称 起始行 = 1 文件名 = Dir(文件夹路径 & "*.xlsx") Do While 文件名 <> "" ' 跳过临时文件和目标文件本身 If 文件名 <> 目标工作簿.Name And Left(文件名, 2) <> "~$" Then Set 源工作簿 = Workbooks.Open(文件夹路径 & 文件名) On Error Resume Next Set 源工作表 = 源工作簿.Sheets(名称) On Error GoTo 0 If Not 源工作表 Is Nothing Then ' 第一个文件复制表头,后续只复制数据行 If 起始行 = 1 Then 源工作表.UsedRange.Copy 目标工作表.Cells(起始行, 1) 起始行 = 目标工作表.UsedRange.Rows.Count + 1 Else 源工作表.UsedRange.Offset(1).Copy 目标工作表.Cells(起始行, 1) 起始行 = 目标工作表.UsedRange.Rows.Count + 1 End If End If 源工作簿.Close SaveChanges:=False End If 文件名 = Dir Loop Next 名称 ' 删除默认的空白工作表 Application.DisplayAlerts = False For Each 工作表 In 目标工作簿.Sheets If 工作表.Name <> "Studentname" And 工作表.Name <> "studentdivision" And 工作表.Name <> "studentmarks" Then 工作表.Delete End If Next 工作表 Application.DisplayAlerts = True MsgBox "合并完成,请保存当前工作簿!" End Sub
- 修改代码中的
文件夹路径为你的实际路径,回到Excel界面按Alt + F8,选择合并同名工作表运行宏 - 运行完成后保存当前工作簿即可
注意:
- 运行前关闭其他打开的Excel文件,避免冲突
- 若宏被禁用,需在Excel选项中启用宏
- 确保所有源文件的对应工作表列结构一致
内容的提问来源于stack exchange,提问作者Bhushan Nalawade
相关产品推荐
相关产品推荐

