【问题标题】:Add sheet to Excel file将工作表添加到 Excel 文件
【发布时间】:2016-01-11 21:25:49
【问题描述】:

我有一个包含多张工作表的 Excel 文件。我想保存一个数据框并将其作为第一张表插入到文件中。如何使用 xlsx 包做到这一点?

【问题讨论】:

标签: r


【解决方案1】:

@Navid 对包xlsx 的回答是正确的,但不幸的是它有一个 java 依赖,导致我在读取/写入大量数据时遇到很多问题(10,000+ 行,所以甚至没有那么大!)。

我会推荐使用openxlsx 包,它可以避免java 依赖。如果您想将更多工作表添加到单个文件中,那么这就是我发现的适合我的方法。 @eipi10 对 worksheetOrder() 的评论是一个很好的提示,但您每次都需要使用 rev(1:3) 之类的内容更改该参数(假设文件中有三个工作表)。

为清楚起见,这里是openxlsx 4.0 版的工作流程

# Create a blank workbook
OUT <- createWorkbook()

# Add some sheets to the workbook
addWorksheet(OUT, "Sheet 1 Name")
addWorksheet(OUT, "Sheet 2 Name")

# Write the data to the sheets
writeData(OUT, sheet = "Sheet 1 Name", x = dataframe1)
writeData(OUT, sheet = "Sheet 2 Name", x = dataframe2)

# Reorder worksheets
worksheetOrder(OUT) <- c(2,1)

# Export the file
saveWorkbook(OUT, "My output file.xlsx")

【讨论】:

  • 这是对如何处理编写多个工作表的一个很好的总结。您必须创建工作簿对象,添加所有工作表,然后将其写出来。因为我需要添加到现有文件中,所以我必须读取 xlsx 文件、添加工作表、保存。当我进行更多处理时,我必须再次阅读 - 添加 - 保存。故事的精神:请注意,如果不先读取整个文件(即创建一个 wrokbook 对象 - 在您的情况下为空,或者在其他情况下 - 从磁盘读取),则无法添加工作表。
【解决方案2】:

这是一个旧帖子和迟到的答案,但是当这个搜索结果弹出时,我写信是为了帮助其他人。

可以在单独的 Excel 表中写入,但您需要多次写入 write.xlsx() 并且每次都使用选项 append=TRUE 像这样:

write.xlsx(df$sheet1, file = "myfile.xlsx", sheetName="sh1", append=TRUE)
write.xlsx(df$sheet2, file = "myfile.xlsx", sheetName="sh2", append=TRUE)
write.xlsx(df$sheet3, file = "myfile.xlsx", sheetName="sh3", append=TRUE)

【讨论】:

    【解决方案3】:

    如果您想在现有 Excel 文件的新“工作表”中添加 data.frame, Navid 的回答是有效的。这里再举一个例子。 R: Append a worksheet to an excel workbook without reading the entire workbook

    简而言之:

    library(xlsx)
    write.xlsx(your_dataframe, "test.xlsx", sheetName="New_Sheet", append=TRUE)
    

    其中“your_dataframe”是您的数据框,“test.xlsx”是您现有 Excel 文件的路径,“New_sheet”是您要添加到现有 Excel 文件的新数据表的名称。

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2018-03-22
      • 2022-08-19
      • 2021-03-30
      • 2013-07-01
      相关资源
      最近更新 更多