使用R Shiny从XLConnect下载Excel文件

有没有人尝试使用R Shiny下载处理程序下载新创build的XLConnect Excel文件?

在ui.R有一个不起眼的线:

downloadButton('downloadData', 'Download') 

在server.R中有处理程序:

 output$downloadData <- downloadHandler( filename = function() { "output.xlsx" }, content = function(file){ wb <- loadWorkbook(file, create = TRUE) createSheet(wb, name = "Sheet1") writeWorksheet(wb, c(1:3), sheet = "Sheet1") # writes numbers 1:3 in file saveWorkbook(wb) } ) 

我没有问题下载一个.csv和没有问题创build与XLConnect的Excel文件。 但是,当我运行上面的代码时,我的Chrome浏览器中出现以下错误:

IllegalArgumentException(Java):不支持文件扩展名“file1b683b9323bc”! 只允许* .xls和* .xlsx!

据我所见,XLConnect不能写入临时文件。

有没有人有解决scheme或解决方法?

一种select是将文件保存在特定位置,然后创build指向它的下载链接。 但是,由于多个用户会导致havok,所以这不是很有光泽。

非常感谢

马库斯

尝试使用这个content(...)function; 这个对我有用…

 content = function(file){ fname <- paste(file,"xlsx",sep=".") wb <- loadWorkbook(fname, create = TRUE) createSheet(wb, name = "Sheet1") writeWorksheet(wb, c(1:3), sheet = "Sheet1") # writes numbers 1:3 in file saveWorkbook(wb) file.rename(fname,file) } 

问题是该file是一个随机生成的临时文件,没有扩展名,而saveWorkbook(...)需要.xlsx扩展名。 因此,这只是将.xlsx附加到file ,并将其用于所有XLConnect操作,然后将最终文件重命名为原始名称(例如,剥离扩展名)。