使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列

Posted

技术标签:

【中文标题】使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列【英文标题】:When using rhandsontable how do I stop hot_to_r adding a column on download 【发布时间】:2021-09-09 01:51:21 【问题描述】:

我正在尝试编写一个简单的闪亮应用程序来上传 .csv 文件,对其进行编辑然后下载。我几乎在那里只有下载的文件有一个额外的行号列。关于我如何抑制这种情况的任何建议?

这是我的代码:

library(rhandsontable)
library(shiny)

ui <- fluidPage(
  fluidPage(
    titlePanel("Upload, edit and save a csv file"),
    sidebarLayout(
      sidebarPanel(
        fileInput('file1', 'Choose CSV File',
                  accept=c('text/csv', 
                           'text/comma-separated-values,text/plain', 
                           '.csv')),
         downloadButton('downloadData', 'Download')
      ),
      mainPanel(
        rHandsontableOutput("hot")
      )
    )
  )
)

server <- function(input, output, session) 

    getData <- reactive(
      req(input$file1) # Don't run any more code until the user has selected this
      inFile <- input$file1
      read.csv(inFile$datapath, header=T)
    )

    output$hot = renderRHandsontable(
       req(input$file1) # Don't run any more code until the user has selected this
       if (!is.null(input$hot)) 
          rhandsontable(hot_to_r(input$hot))
         else 
          rhandsontable(getData())
        
    )
 
    output$downloadData <- downloadHandler(
       filename = function()  
         paste("data-", Sys.Date(), ".csv", sep="")
       ,
       content = function(file) 
         write.csv(hot_to_r(input$hot), file)
       
    )


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

【问题讨论】:

【参考方案1】:

我们可以使用readr::write_csv() 来避免额外的列,或者使用write.csv(hot_to_r(input$hot), file, row.names = FALSE) 将row.names 参数设置为FALSE。

output$downloadData <- downloadHandler(
    filename = function()  
        paste("data-", Sys.Date(), ".csv", sep="")
    ,
    content = function(file) 
        readr::write_csv(hot_to_r(input$hot), file)
    
)

【讨论】:

以上是关于使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列的主要内容,如果未能解决你的问题,请参考以下文章

如何将 'afterColumnResize' 事件与 'rhandsontable' 一起使用?

在 Shiny 中使用 rhandsontable 时出错

RHandsontable 不正确的输入转换,当使用格式时

如何在 Shiny 的 rhandsontable 单元格中嵌入模态

如何让 rhandsontable 对输入值的变化和自身的变化做出反应?

在 R Shiny 中,如何使用 actionButton 重置 rhandsontable 中的数据(反转所有手动输入)?