我正在编写一个闪亮的应用程序,允许用户输入CSV文件并将其转换为特定的XML规范(OPML,RSS提要的标准)。
我当前的问题是统一使用自定义格式选择特定行、和导出的能力。我可以使用我编写的自定义函数( downloadButton() )将所有内容与标准的generate_opml()一起导出,该函数可以转换成适当的XML格式:
output$downloadOPML <- downloadHandler(
filename = function() {
paste('journal-rss-', Sys.Date(), '.opml', sep='')
},
content = function(con) {
opml <- generate_opml(db)
cat(saveXML(opml), file = con)
}
)但是,我希望能够只导出选定的行,这似乎是最简单的DT::datatable()。这可以很容易地导出为CSV和其他几种格式:
output$user_table <- renderDataTable({
datatable(
db,
selection = "none",
filter="top",
rownames = FALSE,
extensions = c("Buttons", "Select"),
options = list(
select = TRUE,
dom = 'Blfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = list(
list(extend = 'csv', filename = "File", title = NULL,
exportOptions = list(modifier = list(selected = TRUE))),
list(extend = 'excel', filename = "File", title = NULL,
exportOptions = list(modifier = list(selected = TRUE)))),
text = 'Download'
))
),
class = "display"
)因此,我的问题是,是否可以使用DT::datatable()导出自定义文件类型?还是有一种方法可以使downloadButton()只导出选定的行?
发布于 2022-09-22 16:24:49
所选行的索引在input$ID_rows_selected中,其中ID是datatable的输出id。所以你可以:
output$downloadOPML <- downloadHandler(
filename = function() {
paste('journal-rss-', Sys.Date(), '.opml', sep='')
},
content = function(con) {
dat <- db[input$user_table_rows_selected, ]
opml <- generate_opml(dat)
cat(saveXML(opml), file = con)
}
)但是,如果使用Select扩展,我不确定这是否有效。也许和server=FALSE在一起。请查收。
https://stackoverflow.com/questions/73817814
复制相似问题