【发布时间】:2021-09-01 21:47:52
【问题描述】:
我想对我的所有 .xlsx 执行以下步骤:
复制第一张纸
将复制的工作表粘贴到另一个文件
-
将粘贴的表格重命名为文件名
- 重复第 1 步并将工作表复制到第 2 步的同一文件中,重复第 3 步
我可以用 R 完成这些步骤吗?我的 .xlsx 包含 img 并且单元格已格式化。
谢谢
【问题讨论】:
-
看看
openxlsx包。
标签: r
我想对我的所有 .xlsx 执行以下步骤:
复制第一张纸
将复制的工作表粘贴到另一个文件
将粘贴的表格重命名为文件名
我可以用 R 完成这些步骤吗?我的 .xlsx 包含 img 并且单元格已格式化。
谢谢
【问题讨论】:
openxlsx 包。
标签: r
这是基于 RDCOMClient 的另一种方法:
library(RDCOMClient)
xlApp <- COMCreate("Excel.Application")
path_Excel_File1 <- "C:\\...\\File1.xlsx"
path_Excel_File2 <- "C:\\...\\File2.xlsx"
xlWbk1 <- xlApp$Workbooks()$Open(path_Excel_File1)
xlWbk2 <- xlApp$Workbooks()$Open(path_Excel_File2)
nb_Sheets <- xlWbk1$Sheets()$Count()
for(l in 1 : nb_Sheets)
{
wbSheet <- xlWbk1$Worksheets(l)$Copy(after = xlWbk2$Worksheets(l))
}
xlWbk2$SaveAs("C:\\...\\FileMerged12.xlsx")
xlWbk2$Close()
xlApp$Quit()
【讨论】:
您的答案在于使用xlsx 包。
此链接提供了很好的指导
http://www.sthda.com/english/wiki/r-xlsx-package-a-quick-start-guide-to-manipulate-excel-files-in-r
【讨论】:
使用XLConnect 包(需要Java)。这个答案的动机是by the method in another answer on this site。
file <- "Book1.xlsx"
# install.packages("XLConnect")
library(XLConnect)
wb <- loadWorkbook(file)
sheets <- readWorksheet(wb,getSheets(wb))
for(x in getSheets(wb)){
path <- paste0(x,".xlsx")
out <- loadWorkbook(path,create = TRUE)
createSheet(out,x)
writeWorksheet(out,sheets[[x]],x)
saveWorkbook(out)
}
【讨论】:
使用 gdata 包(需要 Perl)。这些文件在此处写入.csv-files。从gdata 我们使用函数sheetNames 获取所有工作表名称并使用read.xls 提取它们。这些文件在工作目录中创建。
file <- "Book1.xlsx" ## File to extract from
# install.packages("gdata")
library(gdata)
sheetnames <- sheetNames(file)
sheets <- lapply(setNames(sheetnames,sheetnames),read.xls,xls = file)
for(x in sheetnames){
write.csv(sheets[[x]],paste0(x,".csv"),row.names = FALSE)
}
【讨论】: