R Shiny:如何在DT :: renderDataTable中添加下载按钮

时间:2018-04-26 09:14:32

标签: r shiny

我正在尝试在表格上方添加下载按钮('复制',' csv',' excel',#39; pdf')在我的R Shiny应用程序中,但是当在内部使用数据表时,renderDataTable似乎不起作用。

output$mytable1  <- DT::renderDataTable(
        datatable(
            { plots.dfs()[[1]] },
        rownames = TRUE,
        options = list(
            fixedColumns = TRUE,
            autoWidth = TRUE,
            ordering = FALSE,
            dom = 'tB',
            buttons = c('copy', 'csv', 'excel', 'pdf')
        ),
        class = "display"
    ))

当我在内部使用不包含DT :: datatable的DT :: renderDataTable时,renderDataTable运行良好,我有所有功能(过滤器,搜索字段等),下载按钮除外(我想添加的内容)

output$mytable1 = DT::renderDataTable({ plots.dfs()[[1]] })

你知道我做错了什么吗?谢谢你的帮助

3 个答案:

答案 0 :(得分:3)

正如斯蒂芬在评论中所说,添加按钮的方法如下:

output$mytable1  <- DT::renderDataTable(
                        DT::datatable(
                            { plots.dfs()[[1]] },

                            extensions = 'Buttons',

                            options = list(
                                paging = TRUE,
                                searching = TRUE,
                                fixedColumns = TRUE,
                                autoWidth = TRUE,
                                ordering = TRUE,
                                dom = 'tB',
                                buttons = c('copy', 'csv', 'excel')
                            ),

                            class = "display"
                       ))

答案 1 :(得分:2)

当我偶然发现这个解决方案时,它奏效了,但禁用了搜索和分页。添加一个最终对我有用的解决方案(dom = 'Bfrtip'):

datatable(data, extensions = "Buttons", 
            options = list(paging = TRUE,
                           scrollX=TRUE, 
                           searching = TRUE,
                           ordering = TRUE,
                           dom = 'Bfrtip',
                           buttons = c('copy', 'csv', 'excel', 'pdf'),
                           pageLength=5, 
                           lengthMenu=c(3,5,10) ))

答案 2 :(得分:1)

添加一个关于允许下载整个表格的更明确的答案,因为我认为应该更清楚地概述。使用 renderDT({}) 下载按钮仅下载当前显示的数据。您可以使用 renderDT(server = FALSE, {}) 使按钮下载整个数据集,如下所示:

renderDT(server=FALSE,{
  # Load data
  data <- mtcars
  # Show data
  datatable(data, extensions = 'Buttons', 
            options = list(scrollX=TRUE, lengthMenu = c(5,10,15),
                           paging = TRUE, searching = TRUE,
                           fixedColumns = TRUE, autoWidth = TRUE,
                           ordering = TRUE, dom = 'tB',
                           buttons = c('copy', 'csv', 'excel','pdf')))
})