将多个数据框导出到多个Excel工作表的简便方法

11 浏览
0 Comments

将多个数据框导出到多个Excel工作表的简便方法

我惊讶地发现没有一种简单的方法可以将多个Data.Frame导出到Excel文件的多个工作表中?我尝试了xlsx包,似乎只能写入一个工作表(覆盖旧表);我还尝试了WriteXLS包,但一直给我错误...

我的代码结构如下:按设计,对于每个迭代,输出Data.Frame(tempTable)和Sheet名称(sn)都会更新并导出到一个标签页中。

for (i in 2 : ncol(code)){ 
        ...
        tempTable <- ...
        sn <- ...
        WriteXLS("tempTable", ExcelFileName = "C:/R_code/../file.xlsx",
              SheetNames = sn);
}

我可以导出到多个cvs文件,但肯定有一种在Excel中做到这一点的简单方法,对吧?

admin 更改状态以发布 2023年5月21日
0
0 Comments

您还可以使用openxlsx库将多个数据集导出到单个工作簿的多个工作表中。与xlsx相比,openxlsx的优点在于其消除了对java库的依赖。

使用列表名称作为工作表名称,将数据帧列表写入单独的工作表中。

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

0
0 Comments

You can write to multiple sheets with the xlsx package. You just need to use a different sheetName for each data frame and you need to add append=TRUE:

library(xlsx)
write.xlsx(dataframe1, file="filename.xlsx", sheetName="sheet1", row.names=FALSE)
write.xlsx(dataframe2, file="filename.xlsx", sheetName="sheet2", append=TRUE, row.names=FALSE)

另一个选择是在R/xlsx代码中完成所有操作,可获得更多对格式和数据框放置位置的控制,然后在最后保存工作簿。例如:

wb = createWorkbook()
sheet = createSheet(wb, "Sheet 1")
addDataFrame(dataframe1, sheet=sheet, startColumn=1, row.names=FALSE)
addDataFrame(dataframe2, sheet=sheet, startColumn=10, row.names=FALSE)
sheet = createSheet(wb, "Sheet 2")
addDataFrame(dataframe3, sheet=sheet, startColumn=1, row.names=FALSE)
saveWorkbook(wb, "My_File.xlsx")

如果你觉得有用的话,以下是一些有趣的辅助函数,可以更轻松地使用xlsx添加格式、元数据和其他特性到电子表格中:http://www.sthda.com/english/wiki/r2excel-read-write-and-format-easily-excel-files-using-r-software

0