如何调整Shiny的Download按钮实现两个表格同时导出为Excel
解决方法
你之前调用writexl::write_xlsx()的传参方式不符合函数要求:如果要将多个数据框导出到同一个Excel文件的不同工作表,需要将所有数据框包装为命名列表传入函数的第一个参数,列表的每个元素名称会自动作为对应工作表的名称。
你只需要修改downloadHandler中的导出代码即可,调整后的代码如下:
output$dl <- downloadHandler( filename = function() { "data.xlsx"}, content = function(file) { # 用命名列表包装两个表格,列表名就是Excel里的工作表名 writexl::write_xlsx( list( Table1 = data_subset(), Table2 = data_subset2() ), path = file ) } )
如果需要把两个表格上下合并到同一个工作表里而不是分sheet,可以用dplyr::bind_rows()先合并再导出:
output$dl <- downloadHandler( filename = function() { "data.xlsx"}, content = function(file) { merged_data <- dplyr::bind_rows( Table1 = data_subset(), Table2 = data_subset2(), .id = "表格来源" # 可选参数,加一列标识数据来自哪个原表格 ) writexl::write_xlsx(merged_data, path = file) } )
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

