如何调整Shiny应用下载的Excel文件 新增下载当日日期列Todayday
解决方法
你只需要修改output$dl对应的下载处理逻辑,在导出前给数据集新增Todayday列即可,分两种场景对应修改代码:
单表导出场景(你最初提供的可运行代码版本)
直接替换原output$dl代码为以下内容:
output$dl <- downloadHandler( filename = function() { "data.xlsx"}, content = function(file) { export_data <- data_subset() # 新增下载日期列,格式为日/月 export_data$Todayday <- format(Sys.Date(), "%d/%m") writexl::write_xlsx(export_data, path = file) } )
多表导出场景(你当前在用的多sheet导出版本)
替换对应output$dl代码为以下内容,会给所有导出的sheet都加上Todayday列:
output$dl <- downloadHandler( filename = function() { "data.xlsx"}, content = function(file) { data1 <- data_subset1() data2 <- data_subset2() sheets <- mget(ls(pattern = "data")) # 遍历所有表格统一加下载日期列 sheets <- lapply(sheets, function(x) { x$Todayday <- format(Sys.Date(), "%d/%m") return(x) }) writexl::write_xlsx(sheets, path = file) } )
说明:代码中
Sys.Date()获取的是Shiny服务端的当前日期,常规场景下可满足需求;如果需要获取用户本地的当前日期,需要额外通过前端JS传值到后端,可根据实际场景调整。
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

