gpt4 book ai didi

r - 使用 R Shiny 从 XLConnect 下载 Excel 文件

转载 作者:行者123 更新时间:2023-12-01 17:41:38 27 4
gpt4 key购买 nike

有人尝试过使用 R Shiny 中的下载处理程序通过 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 没有问题,使用 XLConnect 创建 Excel 文件也没有问题。但是当我运行上面的代码时,我在 Chrome 浏览器中收到以下错误:

IllegalArgumentException (Java): File extension "file1b683b9323bc" not supported! Only *.xls and *.xlsx are allowed!

据我所知,XLConnect 无法写入临时文件。

有人有解决方案或解决方法吗?

一种选择是将文件保存在特定位置,然后创建指向该文件的下载链接。然而,这并不是很 Shiny ,因为多个用户会造成破坏。

非常感谢

马库斯

最佳答案

尝试将其用于 content(...) 函数;它对我有用...

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

关于r - 使用 R Shiny 从 XLConnect 下载 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21383748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com