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

如何用R合并含同名工作表的两个工作簿?报错解决

解决Excel工作簿对应工作表行合并的R代码错误

错误原因

出现Error in file.exists(file): invalid 'file' argument的核心原因:

  • 第二段代码中,read.xlsx()函数的第一个参数要求是文件路径字符串,但你传入了loadWorkbook()返回的工作簿对象,导致函数无法识别有效的文件路径。
  • 第一段代码逻辑错误:循环中重复添加同名工作表,且未实现行合并,只是将两个工作簿的工作表分别写入新工作簿。

修正后的代码

使用openxlsx包实现需求,以下是正确的代码:

library(openxlsx)

# 替换为你的实际文件路径
wb1_path <- "Workbook1.xlsx"
wb2_path <- "Workbook2.xlsx"
output_path <- "combined_workbook.xlsx"

# 创建合并后的工作簿
combined_wb <- createWorkbook()

# 获取第一个工作簿的所有工作表名称(两个工作簿表名一致,取其一即可)
sheet_names <- getSheetNames(wb1_path)

# 循环处理每个工作表
for (sheet in sheet_names) {
  # 读取两个工作簿中对应工作表的数据
  data1 <- read.xlsx(wb1_path, sheet = sheet)
  data2 <- read.xlsx(wb2_path, sheet = sheet)
  
  # 合并行数据(确保列名一致,rbind可直接使用)
  combined_data <- rbind(data1, data2)
  
  # 添加工作表并写入合并后的数据
  addWorksheet(combined_wb, sheetName = sheet)
  writeData(combined_wb, sheet = sheet, x = combined_data)
}

# 保存合并后的工作簿
saveWorkbook(combined_wb, file = output_path, overwrite = TRUE)

代码说明

  1. 路径设置:替换代码中的文件路径为你本地的实际路径,确保文件存在且路径格式正确(Windows路径注意用/或转义\\)。
  2. 读取数据:直接通过文件路径调用read.xlsx()读取对应工作表,避免传入工作簿对象导致的参数错误。
  3. 行合并:利用rbind()合并两个数据表,前提是对应工作表的列名完全一致(符合需求描述)。
  4. 写入保存:创建新工作表并写入合并后的数据,最后保存为新工作簿。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:42:44