繁体   English   中英

将一个文件中的一个excel工作表添加到R中的另一个工作簿

[英]Add one excel worksheet from one file to another workbook in R

所以我有一个工作簿 wb,其中有一个名为“Ice Data”的工作表我有一个包含 5 个工作表的 excel 文件“path/test.xlsm”,但我只想克隆第一个名为“Pasta”的工作表并将其添加到另一个工作簿 wb .

我不知道该怎么做。 我已经查找了 openxlsx 但我似乎无法管理。

谢谢

library(openxlsx)

## Open the first workbook,  add a new sheet called Pasta 
## and get its sheet number.
wb1 = loadWorkbook("test1.xlsx")
addWorksheet(wb1, "Pasta")
TargetSheet = grep("^Pasta$", names(wb1))[[1]]

## open the second workbook, find and read the Pasta sheet.
wb2 = loadWorkbook("test2.xlsx")
SourceSheet = grep("^Pasta$", names(wb2))[[1]]
Sheet2Data = readWorkbook(wb2, SourceSheet)

## Write the data to the new sheet in the first workbook and save. 
writeData(wb1, TargetSheet, Sheet2Data)
saveWorkbook(wb1, "Test3.xlsx")

与 G5W 类似,但您可以完全留在 openxlsx 中并使用 openxlsx 包中的 getSheetNames 函数,并避免在环境中创建额外的对象。 此外,如果您有像我这样的同事喜欢用几乎相同的名称命名工作表,“grep”ping 模式可能并不总能产生您想要的结果。

您最初将有两个工作簿:1) 称为 test.xlsm 的 Ice Data 和 2) 包含工作表“Pasta”上的 Pasta 数据的其他文件,此后称为 Pasta.xlsx。

首先获取 pasta.xlsx 的工作表名称/位置:

library(openxlsx)
getSheetNames("path/pasta.xlsx")

[1] "Pasta"       "Not pasta"   "maybe pasta" "salad"

这将列出文件中可以按位置或名称索引的所有工作表名称。 因此,如果您有标签:Pasta、Not Pasta、也许 Pasta 和“沙拉”,而您只想要第一个“Pasta”

您只能通过 index 在该表中阅读:

pb <- readWorkbook("path/pasta.xlsx", sheet = 1)

或姓名

pb <- readWorkbook("path/pasta.xlsx", sheet = "Pasta")

现在你只有那张纸了。 加载 test.xlsm 文件,然后添加一张空白表,在本例中为简单起见将其称为“Pasta”。 这是最终将写入 Pasta 数据的地方。

wb <- loadWorkbook("path/test.xlsm")

addWorksheet(wb, "Pasta")

将面食数据 pb 写入名为 wb 的 test.xlsm 文件中的空白面食工作表。

writeData(wb, sheet = "Pasta", pb)

#Confirm it looks good
openXL(wb)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM