我想导出一个与现有 .xlsx 工作表格式完全相同的 R 对象。我可以设法复制值,但无法复制样式。我看过
xlsx
包,但我也很好奇是否有另一种替代方案可以直接复制工作表。
不幸的是,我没有数据源文件,所以这是我的MWE数据源的图片:
是否可以只从现有表格中提取样式并将其粘贴到副本上?请注意,我无法使用
openxlsx
软件包,因为我无法在我的计算机上安装 rtools
。
library(xlsx)
files <- "Test.xlsx"
wb <- xlsx::loadWorkbook(files)
createSheet(wb, sheetName = "copy")
# get values and styles from original sheet
sheets <- getSheets(wb)
rows <- getRows(sheets[[1]]) # get rows
cells <- getCells(rows)
values <- lapply(cells, getCellValue)
styles <- lapply(cells, getCellStyle)
#Create new rows and cells
rows.new <- createRow(sheets[[4]],1:length(rows)) # get rows
cells.new <- createCell(rows.new,1:2)
#set cell values, but not working for styles
mapply(setCellValue,cells.new,matrix(unlist(values), nrow=3, ncol=2,byrow=TRUE))
mapply(setCellStyle,cells.new,matrix(unlist(styles), nrow=3, ncol=2,byrow=TRUE))
#save workbook
saveWorkbook(wb, file=files)
您可以使用 RDCOMClient R 包复制 Excel 工作表。这是一个例子:
library(RDCOMClient)
path_Excel_File_Output <- "D:\\output.xlsx"
path_Excel_File1 <- "D:\\file1.xlsx"
path_Excel_File2 <- "D:\\file2.xlsx"
xlApp <- COMCreate("Excel.Application")
xlWbk1 <- xlApp$Workbooks()$Open(path_Excel_File1)
xlWbk2 <- xlApp$Workbooks()$Open(path_Excel_File2)
# Copy one sheet after another ...
xlWbk1$Worksheets(1)$Copy(after = xlWbk2$Worksheets(1))
xlWbk2$SaveAs(path_Excel_File_Output)
xlWbk1$Close()
xlWbk2$Close()
xlApp$Quit()