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

如何用R语言openxlsx包获取工作簿中已存在的工作表?

在openxlsx中为现有工作簿的已存在工作表赋值变量

当你加载现有Excel工作簿时,不需要通过addWorksheet()获取工作表变量——因为该函数的作用是创建新工作表,而非引用已存在的表。你可以通过以下两种方式实现对已有工作表的引用:

1. 直接使用工作表名称或索引操作

openxlsx的核心操作函数(如writeData、addStyle等)的sheet参数支持直接传入工作表名称(字符串)或索引(整数,从1开始计数),完全可以替代新建工作表时的sh变量作用:

library(openxlsx)
f <- "Excel Output/Example.xlsx"
df_new <- data.frame("ColA" = c("D", "E"), "ColB" = c(16L, 25L))

# 加载现有工作簿
wb <- loadWorkbook(f)

# 方式一:用工作表名称指定目标表
writeData(wb, sheet = "MyExampleSheet", df_new, startRow = 4)

# 方式二:用工作表索引指定目标表(第一个表为1,第二个为2,依此类推)
writeData(wb, sheet = 1, df_new, startRow = 4)

# 保存修改后的工作簿
saveWorkbook(wb, f, overwrite = TRUE)

2. 将工作表名称/索引赋值为变量

如果你习惯用变量指代工作表,直接把名称或索引存入变量即可,后续操作直接调用该变量:

# 加载工作簿
wb <- loadWorkbook(f)

# 赋值工作表名称给变量
sh <- "MyExampleSheet"
# 或者赋值工作表索引
# sh <- 1

# 使用变量操作工作表
writeData(wb, sheet = sh, df_new, startRow = 4)
saveWorkbook(wb, f, overwrite = TRUE)

补充说明

openxlsx对现有工作表的引用逻辑和新建工作表不同:新建时addWorksheet()返回的是工作表的内部标识,但操作现有表时,通过名称/索引就能直接定位目标,无需额外获取对象。所有支持sheet参数的函数都兼容这两种传入方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:20:20