Как загрузить несколько файлов Excel (.csv и .xlsx) в ZIP-файл в R блестящий? - PullRequest
0 голосов
/ 30 марта 2020

Я сделал , который может загружать файлы и по одному. Есть ли способ создать функцию downloadHandler для загрузки всех файлов .xlsx и .csv в zip-файл? Пожалуйста, помогите!

Ниже приведен пример кода:

Вот код пользовательского интерфейса, который я создал для кнопок загрузки файлов:

library(shiny)
library(openxlsx)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      downloadButton("download_excel_1", "Download Excel 1"),
      downloadButton("download_excel_2", "Download Excel 2"),
      downloadButton("download_csv_1", "Download csv 1")
    ),
    mainPanel()
  )
)


Ниже приведен код для сервер:


server <- function(input, output) {
  excel_name_1 = reactive({
    (paste("Excel 1", ".xlsx"))})

  output$download_excel_1 <- downloadHandler(
    filename = function() {excel_name_1()},
    content = function(file) {my_workbook <- createWorkbook()

    addWorksheet(wb = my_workbook, sheetName = paste("excel file 1"))
    writeData(my_workbook, sheet = 1, paste("text"), startRow = 2,startCol = 2)
    pageSetup(my_workbook, sheet = 1, orientation = "landscape")

    saveWorkbook(my_workbook, file)})

  excel_name_2 = reactive({
    (paste("Excel 2", ".xlsx"))})

  output$download_excel_2 <- downloadHandler(
    filename = function() {excel_name_2()},
    content = function(file) {my_workbook <- createWorkbook()

    addWorksheet(wb = my_workbook, sheetName = paste("excel file 2"))
    writeData(my_workbook, sheet = 1, paste("text"), startRow = 2,startCol = 2)
    pageSetup(my_workbook, sheet = 1, orientation = "landscape")

    saveWorkbook(my_workbook, file)})


  csv_name_1 = reactive({
    paste("csv 1", ".csv")})

  output$download_csv_1 <- downloadHandler(
    filename = function() {csv_name_1()}, 
    content = function(file) {write.csv(data.frame(data.frame(csv_1())), file, row.names=FALSE)}) }

csv_1 = reactive({
  sample = c("sample text")

  csv = as.data.frame(t(as.matrix(data.frame(sample))))

  colnames(csv) = c("sample")
  csv
})

shinyApp(ui = ui, server = server)

Цените свое время и усилия с этим.

...