按钮:带有滚动条的下载按钮仅下载几行
Posted
技术标签:
【中文标题】按钮:带有滚动条的下载按钮仅下载几行【英文标题】:Buttons: download button with scroller downloads only few rows 【发布时间】:2016-11-23 11:01:07 【问题描述】:我正在处理超过 100 000 行的表格,并使用 DT
包(开发版本 0.1.56)在 Shiny App 中对其进行可视化。
此外,我使用DT
扩展为:Buttons
,以下载不同格式的数据。但是,虽然Scroller
扩展程序也已激活,但我只能下载几行(不是所有数据)。
示例代码:
library("shiny")
library("DT")
shinyApp(
ui = fluidPage(DT::dataTableOutput('tbl')),
server = function(input, output)
output$tbl = DT::renderDataTable(
iris,extensions=c("Buttons",'Scroller'),options = list(dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),scrollY = 50,
scroller = TRUE
))
)
另外,如果我只在 R 中运行这部分代码并在查看器中获取数据表,我可以复制所有行等,这怎么可能?
library("DT")
datatable(
iris,
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
)
)
我尝试了不同的方法:
在选项列表中更改scrollY =
... -> 它正在工作,但scrollY
的数量必须很大才能实际显示所有数据行,以便可以完全下载 -> 不好方法,因为我的数据来自数据库,所以我获得了不同数量的行加上它使应用程序非常慢
使用 pageLength 选项:pageLength = ..., lengthMenu=c(..,..,..,..)
但是选择的选项根本不显示...
有什么想法可以解决这个问题吗?
我知道downloadHandler()
方法,但是我更愿意通过 DT
来完成它,因为可用的扩展程序提供了漂亮而优雅的方式,它允许下载数据一次以不同的格式,如 pdf、excel、csv 和打印。
**我已经看到了同样的问题:
Download button downloads only 145 rows in DataTables with Scroller
但是在DT
包的意思中没有回答
提前致谢
【问题讨论】:
如果在DT::renderDataTable
中添加server=FALSE
会发生什么?
嗨,Carl,实际上效果很好!谢谢!如果您将其发布为答案,我将立即接受它
【参考方案1】:
问题是当server=TRUE
时,只有正在显示的数据被发送到客户端。设置 server=FALSE
会在客户端呈现所有 DT 内容,因此所有数据都在那里。
【讨论】:
当我使用 server = FALSE 时出现此错误:DataTables 警告:table id=DataTables_Table_0 - JSON 响应无效。有关此错误的更多信息,请参阅datatables.net/tn/1【参考方案2】:确实是server = TRUE
成功了。
这是代码,因为像我这样的人可能会将参数放在错误的位置。
library("shiny")
library("DT")
shinyApp(
ui = fluidPage(DT::dataTableOutput('tbl')),
server = function(input, output)
output$tbl = DT::renderDataTable(server = FALSE,
DT::datatable(iris,
extensions=c("Buttons",'Scroller'),
options = list(dom = 'Bfrtip',
buttons = c('copy', 'csv',
'excel', 'pdf',
'print'),
scrollY = 50,
scroller = TRUE)
)
)
)
【讨论】:
当我使用 server = FALSE 时出现此错误:DataTables 警告:table id=DataTables_Table_0 - JSON 响应无效。有关此错误的更多信息,请参阅 datatables.net/tn/1以上是关于按钮:带有滚动条的下载按钮仅下载几行的主要内容,如果未能解决你的问题,请参考以下文章