首页 文章

使用命名工作表将列表中的数据框导出到xlsx

提问于
浏览
1

我需要用我的数据框列表创建一个xlsx文件 . 我遇到了这个解决方案openxlsx solution,见下文(或Syed的第5个答案) . 但是,我的列表有51个命名数据框,我对下面的一长串数据框做了哪些更改?因为我创建的excel文件没有打开 .

require(openxlsx)
list_of_datasets <- list("Name of DataSheet1" = dataframe1, "Name of Datasheet2" = dataframe2)
write.xlsx(list_of_datasets, file = "writeXLSX2.xlsx")

我试图运行write.xlsx(listname,file =“”),命令成功运行并创建了一个xlsx文件,但在打开它时,它会抛出一个错误“microsoft excel无法打开文件,因为它已损坏” . 我试图将向量的长度缩短到1-2,但它不会打开 .

编辑:现在由哈克解决

#extract all data frames 
list2env(soup ,.GlobalEnv)
#reassign names and form new list 
list_of_datasets1 <- list("filename"=dataframe,.....)
#write new list
write.xlsx(list_of_datasets1, file = "template.xlsx")

2 回答

  • 2

    要创建具有多个命名工作表的工作簿,必须使用 createWorkbook()addWorksheet()writeDataTable()saveWorkbook() (按此顺序)而不是 write.xlsx() . 下面是一个基于我使用随机数据创建的数据框列表生成工作表的示例 .

    library(openxlsx)
    id <- 1:5
    # create data frames
    aList <- lapply(id,function(x){
       # generate output as list so we can use id as index to worksheets
       list( data.frame(matrix(runif(50),nrow=10,ncol=5)),x)
    })
    # initialize a workbook
    wb <- createWorkbook("Workbook")
    # add worksheets to workbook
    lapply(aList,function(x){
         addWorksheet(wb,paste("worksheet",x[[2]])) 
         writeDataTable(wb,paste("worksheet",x[[2]]),x[[1]])
    })
    # save workbook to disk once all worksheets and data have been added
    saveWorkbook(wb,file="./data/newWorkbook.xlsx")
    

    ...和输出,注意工作簿中有5个选项卡 .

    enter image description here

  • 0

    您也可以使用append创建新工作表并根据需要命名 .

    write.xlsx(datatable, file = "File.xlsx", sheetName = "sheet1", row.names = FALSE)
    

相关问题