按钮:带滚动条的下载按钮仅下载几行
Buttons: download button with scroller downloads only few rows
我正在处理超过 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
包的意思还没有回答
提前致谢
问题是当 server=TRUE
时只有显示的数据被发送到客户端。设置 server=FALSE
在客户端呈现所有 DT 内容,因此所有数据都在那里。
确实是 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)
)
})
}
)
我正在处理超过 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
包的意思还没有回答
提前致谢
问题是当 server=TRUE
时只有显示的数据被发送到客户端。设置 server=FALSE
在客户端呈现所有 DT 内容,因此所有数据都在那里。
确实是 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)
)
})
}
)