DataTable TableTools扩展实现在Shiny中

时间:2014-12-25 17:47:18

标签: r datatable shiny tabletools

我有一个dataTabe,我试图实现tableTools以便以csv格式导出记录。但是,当过滤后的数据超过1页的记录时,如此处提供的示例所示,导出按钮不会在第2页及之后拾取记录,而只会导出第1页。

从我的研究中看来,oSelectorOps:{ page: 'all' }选项应该可以解决问题。但是我无法让它发挥作用。如果您运行下面的代码并点击导出按钮,它将导致csv文件只有100行(即第一页)而不是整个表。请告知我的语法是否错误,或者是否有更好的替代方法。

请注意,我不想使用downloadHandler,因为我希望能够在使用表格底部的DataTable过滤器字段进行过滤时导出数据。

请点击herehere以解答类似问题。

这是我可重复的例子:

#Load required packages
require(shiny)

#Create a dataframe
df <- data.frame(random=1:160)

server <- function(input,output,session){

    #Display df using DataTable and apply desired options
    output$display <- renderDataTable({df}, 
           option=list(pageLength=100,
                       "dom" = 'T<"clear">lfrtip',
                       "tableTools" = list(
                        "sSwfPath" = "//cdn.datatables.net/tabletools/2.2.3/swf/copy_csv_xls_pdf.swf",
                        "aButtons" = list(list("sExtends" = "csv","oSelectorOpts"=list("page"="all"),"sButtonText" = "Export","aButtons" ="csv")))         
       )

   )
}

ui <- shinyUI(fluidPage(

    #Add a title
    h1('Testing TableTools'),

    #Add required JS libraries
    tagList(
        singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js',type='text/javascript'))),
        singleton(tags$head(tags$script(src='//cdn.datatables.net/tabletools/2.2.3/js/dataTables.tableTools.min.js',type='text/javascript'))),
        singleton(tags$head(tags$link(href='//cdn.datatables.net/tabletools/2.2.3/css/dataTables.tableTools.css',rel='stylesheet',type='text/css')))
            ),


        mainPanel(
           #Display results
           dataTableOutput('display')
                 )      


))

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

试试这个:

{
sExtends: "csv",
"oSelectorOpts": {
    page: 'all',
    filter:'applied'
    },
"mColumns": "visible"
},