我正在使用R包Shiny来开发我自己的Web应用程序。
我有一个下载按钮,允许我将数据导出到Excel文件中。在excel文件中,有4张纸,每张纸都有一个数据框。
例如,在sheet1中有dataTab1,在sheet2中有dataTab2,在表3中有dataTab3,在sheet4中有dataTab4。
为此,我在闪亮的server.R。
中使用函数downloadHeader()这是我的代码:
输出$ downloadTab< - downloadHandler(
filename ="Tab.xls",
content = function(file) {
#db <- paste(tmpdir,file,sep="/")
channel <- odbcConnectExcel(xls.file = file,readOnly=FALSE)
sqlSave(channel, tab1, tablename = "sheet1",rownames = F)
sqlSave(channel, tab2, tablename = "sheet2",rownames = F)
sqlSave(channel, tab3, tablename = "sheet3",rownames = F)
sqlSave(channel, tab4, tablename = "sheet4",rownames = F)
odbcClose(channel)
},
contentType="application/xls"
)
代码运行良好,当我点击按钮&#34; downloadTab&#34;表结果下载到一个excel文件中。问题是这个代码在Windows服务器上运行,但它不能在Linux服务器上运行。
你知道如何解决这个问题吗?你知道如何在Linux服务器上导出excel文件吗?
答案 0 :(得分:2)
以下代码将允许您使用包openxlsx
下载空的Excel文件,即使在Linux Shiny服务器中也是如此。
output$downloadData <- downloadHandler(
filename = "myFile.xlsx",
content = function(file) {
wb <- createWorkbook()
# Do more stuff here
saveWorkbook(wb, file, TRUE)
}
)