【发布时间】:2016-04-28 21:18:33
【问题描述】:
我正在使用 R 包 Shiny 开发自己的 Web 应用程序。
我有一个下载按钮,允许我将数据导出到 Excel 文件中。在 excel 文件中,有 4 张工作表,每张都有一个数据框。
例如,sheet1中有dataTab1,sheet2中有dataTab2,sheet 3中有dataTab3,sheet4中有dataTab4。
为此,我在闪亮的 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包
output$downloadTab
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)
你知道为什么会这样吗?
【问题讨论】:
-
当你尝试修复
xlsx“我已经尝试修复”时,你尝试使用library(XLConnect)吗? -
当您告诉
downloadHeader()时,它的意思是downloadHandler或其他什么? -
你好巴塔尼切克。是的,我尝试使用库(XLConnect)。
-
我输错了 downloadHeader()。正确的词是downloadHandler()
-
再次您好,非常感谢!显然我已经使用了 XLConnect 包,因为当我现在使用它时,一切正常!