gpt4 book ai didi

r - 下载带有多张工作表的 xls 文件作为数据框 Shiny R

转载 作者:行者123 更新时间:2023-12-04 22:01:08 25 4
gpt4 key购买 nike

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

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

例如,在 sheet1 中有 dataTab1,在 sheet2 中有 dataTab2,在 sheet 3 中有 dataTab3,在 sheet4 中有 dataTab4。

为此,我在 Shiny 的 server.R 中使用了函数 downloadHeader()。

我使用了两种方法来做到这一点。

方法一:使用R包xlsx

output$downloadTab <- downloadHandler(

filename = "dataxls.xlsx",
content = function(file) {

#creation of the workbook
dataxls=createWorkbook(file)
#creation of the sheets
dataTabs1=createSheet(wb=dataxls,sheetName="Compartiments-simulation_sans_changement")
dataTabs2=createSheet(wb=dataxls,sheetName="Esperance-simulation_sans_changement")
dataTabs3=createSheet(wb=dataxls,sheetName="Compartiments-simulation_avec_changement")
dataTabs4=createSheet(wb=dataxls,sheetName="Esperance-simulation_avec_changement")
#add the dataframes to the sheets
writeWorksheet(dataxls, dataTab1, sheet = "Compartiments-simulation_sans_changement")
writeWorksheet(dataxls, dataTab2, sheet = "Esperance-simulation_sans_changement")
writeWorksheet(dataxls, dataTab3, sheet = "Compartiments-simulation_avec_changement")
writeWorksheet(dataxls, dataTab4, sheet = "Esperance-simulation_avec_changement")

saveWorkbook(dataxls,file)


}
)

问题是我有以下错误:
createWorkbook(文件)中的错误:
未知格式 C:\Users\Baramova\AppData\Local\Temp\Rtmpmyqyeh\fileafc6d2b5998.xlsx

我尝试使用以下示例修复它:
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)
}

但这对我不起作用。也许我省略了一些东西。
你有什么主意吗?

方法二:使用RODBC包

输出$downloadTab <- downloadHandler(
  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"

)

问题是即使我通过键入以下命令调用了 RODBC 包,也无法识别 odbcConnectExcel() 函数:
库(RODBC)

你知道为什么会这样吗?

最佳答案

我找到了我的问题的解决方案。

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

    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"

)

关于r - 下载带有多张工作表的 xls 文件作为数据框 Shiny R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34943903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com