如何在 Shiny 中使用 DataTable Extensions 更改下载文件中的名称?

Posted

技术标签:

【中文标题】如何在 Shiny 中使用 DataTable Extensions 更改下载文件中的名称?【英文标题】:How can I change the name inside the downloaded file with DataTable Extensions in Shiny? 【发布时间】:2021-08-20 11:58:53 【问题描述】:

我创建了一个闪亮的应用程序,我可以在其中下载各种文件格式(pdf、excel、csv)的表格。但是,我发现它们每个都有与我的 Shiny App 相同的标题(“This is my table in Shiny”)。

我使用来自 DataTable 的 extension。

有人知道我是否可以从下载的文件中删除该标题吗?

这就是我的应用程序的外观。

这些是下载的文件(excel 和 pdf)

我的代码:

library(shiny)
library(DT)

ui <- fluidPage(
  
  # Application title
  titlePanel("This is my table in Shiny")
  
  , mainPanel(
    DT::dataTableOutput("fancyTable")
  ) 
  
) 

server <- function(input, output) 
  
  output$fancyTable <- DT::renderDataTable(
    datatable( data = mtcars
               , extensions = 'Buttons'
               , options = list( 
                 dom = "Blfrtip"
                 , buttons = 
                   list("copy", list(
                     extend = "collection"
                     , buttons = c("csv", "excel", "pdf")
                     , text = "Download"
                   ) ) 
                 
                
                 , lengthMenu = list( c(10, 20, -1) 
                                      , c(10, 20, "All")
                 ) 
                 , pageLength = 10
                 
                 
               ) 
               
    ) 
  )
 

# Run the application 
shinyApp(ui = ui, server = server)

提前致谢

问候

【问题讨论】:

您可以使用 DataTables title 选项来覆盖网页中的值(可能当前是根据标题的 &lt;title&gt; 标签设置的)。只需使用title: ""。我对 r 语法不太熟悉,但我认为:, text = "Download", title = "" 应该可以。请参阅文档here。您还可以使用 r 用于 null 的任何内容。 @andrewjames 感谢您的帮助!我花了一些时间,我不得不尝试很多东西,但我成功了! 【参考方案1】:

尝试了很多东西并搜索了其他帖子...我找到了解决方案!

我需要将每个选项放入一个列表中,以便能够为每个选项添加“标题”参数。

library(shiny)
library(DT)

ui <- fluidPage(
  
  # Application title
  titlePanel("This is my table in Shiny")
  
  , mainPanel(
    DT::dataTableOutput("fancyTable")
  ) 
  
) 

server <- function(input, output) 
  
  output$fancyTable <- DT::renderDataTable(
    datatable( data = mtcars
               , extensions = 'Buttons'
               , options = list( 
                 dom = "Blfrtip", 
                 buttons = 
                   list("copy", list(
                     extend = "collection", 
                     buttons = list(
                       list(extend = "csv", title = "MY TITLE"),
                       list(extend = "excel", title = "MY TITLE"),
                       list(extend = "pdf", title = "MY TITLE")),
                     text = "Download"
                   )),
                 
                 lengthMenu = list( c(10, 20, -1) 
                                      , c(10, 20, "All")
                 ),
                 pageLength = 10
                 
                 
               ) 
               
    ) 
  )
 

# Run the application 
shinyApp(ui = ui, server = server)

在这里你可以看到新标题!

【讨论】:

以上是关于如何在 Shiny 中使用 DataTable Extensions 更改下载文件中的名称?的主要内容,如果未能解决你的问题,请参考以下文章

在 Shiny 的 DataTable 实现中控制数字格式

在 DataTable 输出中使用 Shiny 输入

Shiny:合并 DT::datatable 中的单元格

R语言-在shiny中使用DT包的常用设置

R Shiny 中 DT::datatable() 中冻结标头问题的解决方法

Shiny DataTable:使用按钮扩展保存完整的 data.frame