如何用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
相关产品推荐
相关产品推荐

