如何使用R将多个Excel文件合并为单个多工作表文件
批量合并Excel文件为多工作表文件的解决方案
方法一:Python脚本(适合有编程基础的用户)
借助pandas和openpyxl库可以高效完成批量合并,步骤如下:
- 先安装依赖库:
pip install pandas openpyxl - 把所有要合并的Excel文件放到同一个文件夹里,然后运行下面的脚本:
import pandas as pd from pathlib import Path # 替换成你的Excel文件所在文件夹路径 folder_dir = Path("C:/你的文件目录") # 创建合并后的文件写入对象 with pd.ExcelWriter("合并结果.xlsx", engine="openpyxl") as writer: # 遍历文件夹下所有xlsx文件 for sheet_num, file in enumerate(folder_dir.glob("*.xlsx"), start=1): # 读取文件默认第一个工作表(要读全部工作表的话可以嵌套循环) df = pd.read_excel(file) # 写入新工作表,命名为"工作表N"或者原文件名 sheet_name = f"工作表{sheet_num}" # 也可以用file.stem直接用原文件名当表名 df.to_excel(writer, sheet_name=sheet_name, index=False) - 执行脚本后,同一目录下会生成
合并结果.xlsx,每个原文件对应一个工作表。
方法二:Excel Power Query(无需编程,适合普通用户)
这是最省心的原生工具,操作步骤:
- 打开一个空白Excel文件,切换到「数据」选项卡。
- 点击「获取数据」→「自文件」→「自文件夹」,选择存放Excel文件的文件夹后点「确定」。
- 在弹出的对话框里点击「转换数据」,进入Power Query编辑器。
- 切换到「添加列」选项卡,点击「自定义列」,输入公式:
Excel.Workbook([Content]),点击「确定」。 - 点击自定义列右侧的展开箭头(双向箭头),只勾选「Data」和「Name」(可选,用来保留原文件名),点「确定」。
- 再次点击Data列的展开箭头,选择「仅创建连接」,然后点击「关闭并上载」→「关闭并上载至」。
- 在弹出的窗口选择「只有创建连接」,点「确定」。
- 回到Excel界面,右键点击右侧「查询和连接」里的查询项,选择「加载到」,勾选「每个对象加载到不同的工作表」,点「确定」。
- 等待加载完成,每个原文件的内容就会对应到单独的工作表中。
方法三:VBA宏(适合熟悉Excel宏的用户)
- 打开空白Excel,按
Alt+F11打开VBA编辑器。 - 右键点击左侧项目栏,选择「插入」→「模块」。
- 粘贴以下代码:
Sub 合并Excel为多工作表() Dim folderPath As String, fileName As String Dim targetWb As Workbook, sourceWb As Workbook Set targetWb = ThisWorkbook ' 选择目标文件夹 folderPath = Application.GetOpenFilename(FileFilter:="文件夹选择", Title:="选择存放Excel的文件夹", MultiSelect:=False) & "\" fileName = Dir(folderPath & "*.xlsx") Do While fileName <> "" If fileName <> targetWb.Name Then Set sourceWb = Workbooks.Open(folderPath & fileName) ' 将源文件第一个工作表复制到目标工作簿末尾 sourceWb.Sheets(1).Copy After:=targetWb.Sheets(targetWb.Sheets.Count) ' 将工作表名改为原文件名(去掉.xlsx后缀) ActiveSheet.Name = Left(fileName, Len(fileName) - 5) sourceWb.Close SaveChanges:=False End If fileName = Dir Loop End Sub - 按
F5运行宏,选择存放Excel的文件夹,等待执行完成即可。
注意事项
- 如果原文件有多个工作表,可修改脚本或宏的逻辑,实现全部工作表的合并。
- 确保原文件格式统一,避免数据加载时出现异常。
内容的提问来源于stack exchange,提问作者capital97
相关产品推荐
相关产品推荐

