You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R将多个Excel文件合并为单个多工作表文件

批量合并Excel文件为多工作表文件的解决方案

方法一:Python脚本(适合有编程基础的用户)

借助pandas和openpyxl库可以高效完成批量合并,步骤如下:

  1. 先安装依赖库:
    pip install pandas openpyxl
    
  2. 把所有要合并的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)
    
  3. 执行脚本后,同一目录下会生成合并结果.xlsx,每个原文件对应一个工作表。

方法二:Excel Power Query(无需编程,适合普通用户)

这是最省心的原生工具,操作步骤:

  1. 打开一个空白Excel文件,切换到「数据」选项卡。
  2. 点击「获取数据」→「自文件」→「自文件夹」,选择存放Excel文件的文件夹后点「确定」。
  3. 在弹出的对话框里点击「转换数据」,进入Power Query编辑器。
  4. 切换到「添加列」选项卡,点击「自定义列」,输入公式:Excel.Workbook([Content]),点击「确定」。
  5. 点击自定义列右侧的展开箭头(双向箭头),只勾选「Data」和「Name」(可选,用来保留原文件名),点「确定」。
  6. 再次点击Data列的展开箭头,选择「仅创建连接」,然后点击「关闭并上载」→「关闭并上载至」。
  7. 在弹出的窗口选择「只有创建连接」,点「确定」。
  8. 回到Excel界面,右键点击右侧「查询和连接」里的查询项,选择「加载到」,勾选「每个对象加载到不同的工作表」,点「确定」。
  9. 等待加载完成,每个原文件的内容就会对应到单独的工作表中。

方法三:VBA宏(适合熟悉Excel宏的用户)

  1. 打开空白Excel,按Alt+F11打开VBA编辑器。
  2. 右键点击左侧项目栏,选择「插入」→「模块」。
  3. 粘贴以下代码:
    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
    
  4. 按F5运行宏,选择存放Excel的文件夹,等待执行完成即可。

注意事项

  • 如果原文件有多个工作表,可修改脚本或宏的逻辑,实现全部工作表的合并。
  • 确保原文件格式统一,避免数据加载时出现异常。

内容的提问来源于stack exchange,提问作者capital97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:35:32