我使用R包Shiny開發自己的Web應用程序。以多張作爲數據框下載xls文件Shiny R
我有一個下載按鈕,允許我將數據導出到excel文件。在excel文件中,有4張紙,每張紙上都有一個數據框。
例如,sheet1中有dataTab1,sheet2中有dataTab2,sheet3中有dataTab3,sheet4中有dataTab4。
爲此,我使用函數downloadHeader()在閃亮的server.R中。
我已經使用了兩種方法來做到這一點。
方法1:使用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:\用戶\ Baramova \應用程序數據\本地\ 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)
}
但事實並非如此W¯¯ ork對我來說。也許我正在省略一些東西。 你有什麼想法嗎?
方法2:使用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)
你有任何想法,爲什麼會這樣
當你試圖修復'xlsx'「我已經嘗試了」,你有沒有嘗試use'library(XLConnect)'? – Batanichek
當你告訴'downloadHeader()'它意味着'downloadHandler'或者其他的東西? – Batanichek
你好Batanichek。是的,我試圖使用庫(XLConnect)。 – Mily