R/xlsxDownload_module.R

Defines functions xlsxDownloadUI xlsxDownload

Documented in xlsxDownload xlsxDownloadUI

#' @title xlsxDownloadUI
#' @description Shiny module to download dataframe as xlsx file.
#'
#' @param id Namespace of module.
#' @param label Button label. Defaults to Download
#'
#' @return Returns a tagList.
#' @export
xlsxDownloadUI <- function(id, label = 'Download xlsx') {
  ns <- shiny::NS(id)
  ui_input <- shiny::tagList()

  ui_input$download <- shiny::downloadButton(outputId = ns('download'),
                                             label = label)
  ui_input
}

#' @title xlsxDownload
#' @description Module server function to download dataframe as xlsx file.
#'
#' @param input Input
#' @param output Output
#' @param session Session
#' @param df Dataframe to download.
#' @param filename Name of downloaded file
#'
#' @return Does not return a value.
#' @export
xlsxDownload <- function(input, output, session, df,
                        filename = paste0('data_', Sys.Date(), '.xlsx')) {
  if (Sys.info()['sysname'] == 'Linux') {
    Sys.setenv(R_ZIPCMD = '/usr/bin/zip')
  }

  output$download <- shiny::downloadHandler(
    filename = function() {filename},
    content = function(file) {
      openxlsx::write.xlsx(df, file)
    })
}
kimjam/qrcutils documentation built on May 20, 2019, 10:21 p.m.