R Shiny将两个数据框导出到同一Excel工作表中的两个工作表中

时间:2019-03-30 01:52:23

标签: r excel shiny export

我正在尝试将两个不同的数据框导出到R Shiny的同一excel工作簿中的两个表中。我尝试了许多不同的解决方案,但似乎无济于事。

  output$downloadData <- downloadHandler(
    filename = "My_File.xlsx",
    content = function(file) {
      wb = createWorkbook()

      addWorksheet(wb, "Sheet 1")
      addWorksheet(wb, "Sheet 2")

      writeData(wb, "Sheet 1", exportData(), startCol = 1, rowNames = FALSE)
      writeData(wb, "Sheet 2", ALEGR(), startCol = 1, rowNames = FALSE)

      saveWorkbook(wb, "My_File.xlsx")
    }
  )

给出404未找到错误。

  output$downloadData <- downloadHandler(
    filename = "test.xlsx",
    content = function(file) {
      write.xlsx(exportData(), file, sheetName="sheet1", row.names=FALSE)
      write.xlsx(ALEGR(), file, sheetName="sheet2", append=TRUE, row.names=FALSE)
    }
  )

仅将ALEGR()数据框保存为“ Sheet2”,不保存为“ Sheet1”。

对于我来说,无论是.csv还是.xlsx都不重要,但是我似乎都无法使用。简而言之,我希望exportData()位于同一工作簿的sheet1上,而ALEGR()位于同一工作簿的sheet2上。

谢谢!

1 个答案:

答案 0 :(得分:0)

这应该可以通过library(xlsx)实现:

output$downloadData <- downloadHandler(
    filename = "My_File.xlsx",
    content = function(file) {
        wb <- createWorkbook()

        sheet_1 <- createSheet(wb, "exportData()")

        sheet_2 <- createSheet(wb, "ALEGR()")

        addDataFrame(
            exportData(),
            sheet         = sheet_1,
            row.names     = FALSE
        )

        addDataFrame(
            ALEGR(),
            sheet         = sheet_2,
            row.names     = FALSE
        )

        saveWorkbook(wb, file)
    } 
)