使用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操作,然后将最终文件重命名为原始名称(例如,剥离扩展名)。