R 下载包含多张图纸作为数据帧的xls文件

R 下载包含多张图纸作为数据帧的xls文件,r,excel,shiny,xlsx,rodbc,R,Excel,Shiny,Xlsx,Rodbc,我正在使用R包来开发我自己的web应用程序 我有一个下载按钮,可以将数据导出到excel文件中。在excel文件中,有4个工作表,每个工作表中都有一个数据框 例如,在表1中有dataTab1,在表2中有dataTab2,在表3中有dataTab3,在表4中有dataTab4 为此,我使用Shining server.R中的函数downloadHeader() 我用了两种方法来做这件事 方法1:使用R软件包xlsx 但这对我不起作用。也许我遗漏了什么。 你知道吗 方法2:使用RODBC包 输出$d

我正在使用R包来开发我自己的web应用程序

我有一个下载按钮,可以将数据导出到excel文件中。在excel文件中,有4个工作表,每个工作表中都有一个数据框

例如,在表1中有dataTab1,在表2中有dataTab2,在表3中有dataTab3,在表4中有dataTab4

为此,我使用Shining server.R中的函数downloadHeader()

我用了两种方法来做这件事

方法1:使用R软件包xlsx 但这对我不起作用。也许我遗漏了什么。 你知道吗

方法2:使用RODBC包
输出$downloadTab我找到了问题的解决方案

首先,您必须调用XLConnect和RODBC包。 之后,您可以使用以下示例:

content = function(file) {
  fname = paste(file,"xlsx",sep=".")
  wb = loadWorkbook(fname, create = TRUE)
  createSheet(wb, name = "Sheet1")
  writeWorksheet(wb, c(1:3), sheet = "Sheet1") 
  saveWorkbook(wb)
  file.rename(fname,file)
}
    output$downloadTab <- downloadHandler(  
       filename ="Tab.xls",
       content = function(file) {
           write.csv(Compartiments_simulation_sans_changement, file="Compartiments-simulation_sans_changement.csv")
           write.csv(Esperance_simulation_sans_changement, file="Esperance-simulation_sans_changement.csv")
           write.csv(Compartiments_simulation_avec_changement, file="Compartiments-simulation_avec_changement.csv")
           write.csv(Esperance_simulation_avec_changement, file="Esperance-simulation_avec_changement.csv")

       channel <- odbcConnectExcel(xls.file = file,readOnly=FALSE)
           sqlSave(channel, Compartiments_simulation_sans_changement, tablename = "Compartiments_simulation_sans_changement")
           sqlSave(channel,  Esperance_simulation_sans_changement, tablename = "Esperance_simulation_sans_changement")
           sqlSave(channel, Compartiments_simulation_avec_changement, tablename = "Compartiments_simulation_avec_changement")
           sqlSave(channel, Esperance_simulation_avec_changement, tablename = "Esperance_simulation_avec_changement")
       odbcClose(channel)

    },
    contentType="application/xls" 

)

output$downloadTab当您尝试修复
xlsx
时,“我已经尝试修复”,您是否尝试使用
library(XLConnect)
?当您告诉
downloadHeader()
时,它的意思是
downloadHandler
或smthing?您好,巴坦切克。是的,我尝试使用library(XLConnect)。我键入downloadHeader()时出错。正确的词是downloadHandler(),您好,非常感谢!很明显,我已经fogotten使用软件包XLConnect,因为当我现在使用它时,一切都正常!
  filename ="Tab.xls",
  content = function(fname) {
    tmpdir <- tempdir()


    db <- paste(tmpdir,fname,sep="/")            
    channel <- odbcConnectExcel(xls.file = db,readOnly=FALSE)
    sqlSave(channel, Compartiments_simulation_sans_changement, tablename = "Compartiments_simulation_sans_changement")
    sqlSave(channel,  Esperance_simulation_sans_changement, tablename = "Esperance_simulation_sans_changement")
    sqlSave(channel, Compartiments_simulation_avec_changement, tablename = "Compartiments_simulation_avec_changement")
    sqlSave(channel, Esperance_simulation_avec_changement, tablename = "Esperance_simulation_avec_changement")
    odbcClose(channel)

    },
    contentType="application/csv" 

)
    output$downloadTab <- downloadHandler(  
       filename ="Tab.xls",
       content = function(file) {
           write.csv(Compartiments_simulation_sans_changement, file="Compartiments-simulation_sans_changement.csv")
           write.csv(Esperance_simulation_sans_changement, file="Esperance-simulation_sans_changement.csv")
           write.csv(Compartiments_simulation_avec_changement, file="Compartiments-simulation_avec_changement.csv")
           write.csv(Esperance_simulation_avec_changement, file="Esperance-simulation_avec_changement.csv")

       channel <- odbcConnectExcel(xls.file = file,readOnly=FALSE)
           sqlSave(channel, Compartiments_simulation_sans_changement, tablename = "Compartiments_simulation_sans_changement")
           sqlSave(channel,  Esperance_simulation_sans_changement, tablename = "Esperance_simulation_sans_changement")
           sqlSave(channel, Compartiments_simulation_avec_changement, tablename = "Compartiments_simulation_avec_changement")
           sqlSave(channel, Esperance_simulation_avec_changement, tablename = "Esperance_simulation_avec_changement")
       odbcClose(channel)

    },
    contentType="application/xls" 

)