从闪亮的renderDataTable中保存

cde*_*man 3 r datatables tabletools shiny jquery-datatables

这个问题已经被以前问R 2与TableTools和其他扩展闪亮数据表使用TableTools为R中闪亮的DataTable的renderDataTable但我目前正在努力让TableTools的这个示范从一个闪亮的应用程序下载CSV或XLS.该按钮似乎工作,csv/xls选项可用,但没有任何反应.我唯一能想到的是将数据表版本从1.9.4更新到1.10.1,但仍然没有.所有其他路径都是最新的,除非我犯了一些愚蠢的错误.谢谢.

library(shiny)
library(ggplot2)
runApp(
  list(ui = basicPage(
    h1('Diamonds DataTable with TableTools'),
    tagList(
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
      singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
      singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
    ),
    dataTableOutput("mytable")
  )
  ,server = function(input, output) {
    output$mytable = renderDataTable({
      diamonds[,1:6]
    }, options = list(
      "sDom" = 'T<"clear">lfrtip',
      "oTableTools" = list(
        "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
        "aButtons" = list(
          "copy",
          "print",
          list("sExtends" = "collection",
               "sButtonText" = "Save",
               "aButtons" = c("csv","xls")
          )
        )
      )
    )
    )
  })
)
Run Code Online (Sandbox Code Playgroud)

cde*_*man 6

倾盆而出之后,我发现了我最初的错误.令人尴尬的是,主要问题是我试图直接从闪亮应用程序的rstudio发布中保存.我已经知道这是不可能的,因为rstudio没有闪光灯.因此,最初的解决方案是简单地运行应用程序,然后在安装了闪存的浏览器中打开它. 然后保存按钮正常工作,我可以保存过滤的数据集.

然而,在我的努力中,我发现了一些其他人可能觉得有用的简化.

下一个版本的光泽将使用更新的1.10.2 DataTables.您可以从github页面下载当前的开发版本.这允许在更新其他源文件的链接后省略zeroclipboard文件.下面是我在浏览器中使用最新的闪亮软件包打开时发现的最终代码.请注意,DataTables 1.10.x转换为camelCase表示法时,表示法略有变化.这里可以找到旧符号的转换.

library(shiny)
library(ggplot2)
runApp(
  list(ui = basicPage(
    h1('Diamonds DataTable with TableTools'),
    tagList(
      singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdn.datatables.net/tabletools/2.2.2/js/dataTables.tableTools.min.js',type='text/javascript'))),
      singleton(tags$head(tags$link(href='//cdn.datatables.net/tabletools/2.2.2/css/dataTables.tableTools.css',rel='stylesheet',type='text/css'))),
      singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
    ),
    dataTableOutput("mytable")
  )
  ,server = function(input, output) {
    output$mytable = renderDataTable({
      diamonds[,1:6]
    }, options = list(
      "dom" = 'T<"clear">lfrtip',
      "oTableTools" = list(
        "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
        "aButtons" = list(
          "copy",
          "print",
          list("sExtends" = "collection",
               "sButtonText" = "Save",
               "aButtons" = c("csv","xls")
          )
        )
      )
    )
    )
  })
)
Run Code Online (Sandbox Code Playgroud)

编辑

自DT 0.1.5x起,接口在TableTools更新后发生了变化.您现在使用Buttons扩展名. 注意 - 这仍然是(3/29/16)要求用户从github安装,直到作者认为更新足以推送到CRAN.

library(shiny)
library(DT)
library(ggplot2)

runApp(
  list(ui = basicPage(
    h1('Diamonds DataTable with DT'),
    dataTableOutput("mytable")
  )
  ,server = function(input, output) {
    output$mytable = renderDataTable({
      diamonds[,1:6]
    }, 
    extensions = 'Buttons',
    options = list(
      "dom" = 'T<"clear">lBfrtip',
      buttons = list('copy', 'csv', 'excel', 'pdf', 'print')
    )
    )
  })
)
Run Code Online (Sandbox Code Playgroud)

  • @BlackMilk请看我的编辑.界面最近发生了变化.提供的编辑对我有用. (2认同)