RShiny中如何将checkBoxGroup选中项导出为CSV文件
Shiny 复选框选中值导出CSV实现方案
核心逻辑说明
checkboxGroupInput的输入值会直接返回已勾选项对应的choiceValues内容,你只需要搭配Shiny自带的下载按钮和下载处理函数即可完成导出功能,不需要额外做选项名和值的映射。
具体修改步骤
- 在UI侧的复选框组件下方添加下载按钮,触发导出操作
- 在server侧编写
downloadHandler导出逻辑,读取选中值、整理为表格格式后输出为CSV文件
完整可运行代码
library(shiny) ui <- fluidPage( titlePanel(h1(" Birth Worksheet",align="center")), hr(), sidebarPanel( titlePanel(h4("Antenatal Risk Factors/Current Pregnancy",align="center")), hr(), checkboxGroupInput("Antel", " ", choiceNames = list("Urinary tract infections this pregnancy", "Urinary tract infections this pregnancy, treated", "Anemia this pregnancy (HCT < 30/Hgb <10)", "Hemoglobinopathy this pregnancy", "Coagulation disorder", "Rh sensitization", "Other iso-immunization", "Biliary/liver disorder(Yes at delivery)", "Cardiac disease", "Autoimmune disease", "Antiphospholipid syndrome", "Specify collagen vascular disease", "Asthma", "Acute or chronic lung disease", "Renal disorder/disease", "Renal dialysis or end stage renal disease", "Thyroid disease", "Cancer this pregnancy", "Cancer treatment this pregnancy" ), choiceValues =list("RFC_INFUT","RFC_INFUTTX", "RFC_ANEMIA", "RFC_HEMO", "COAGULATION_DISORDER", "RFC_RHS", "RFC_ISO", "BILARY_LIVE_DISORD", "RFC_CDDZ", "RFC_CVDZ", "RFC_APSY", "RFC_CVSPEC", "RFC_ASTH", "RFC_LGDZ", "RENAL_DISORDER_DISEASE", "RFC_RNDY", "RFC_THYDZ", "RFC_CA", "CANCER_TREATMENT" ) ), # 新增下载按钮 br(), downloadButton("export_selected", "导出选中项为CSV", class = "btn-success") ) ) server <- function(input, output) { # 编写导出逻辑 output$export_selected <- downloadHandler( # 配置导出文件名,带日期后缀避免重名 filename = function() { paste0("选中风险项_", Sys.Date(), ".csv") }, # 配置导出内容 content = function(file) { # 读取当前所有选中的choiceValues值 selected_values <- input$Antel # 处理未选中任何项的情况,导出空表避免报错 if(length(selected_values) == 0){ export_df <- data.frame(选中项对应值 = character(0)) }else{ export_df <- data.frame(选中项对应值 = selected_values) } # 写入CSV,设置编码避免乱码,不导出行名 write.csv(export_df, file, row.names = FALSE, fileEncoding = "UTF-8") } ) } # 运行应用 shinyApp(ui = ui, server = server)
补充说明
- 如果你需要同时导出选项显示名称(choiceNames)和对应值,可以在server端提前做名称和值的映射表,选中后匹配对应名称一起导出即可
- 下载按钮的样式、位置可以根据你的页面布局自行调整,放在侧边栏、主面板都可以
- 若需要导出为Excel格式,只需要把
write.csv替换为writexl::write_xlsx,同时修改文件名后缀为.xlsx即可
内容的提问来源于stack exchange,提问作者Mona
相关产品推荐
相关产品推荐

