Запись таблицы или csv, которые содержат несколько вкладок в Excel

#r #csv #shiny

#r #csv #блестящий

Вопрос:

Мой вопрос кажется довольно простым, но по какой-то причине я пока не нашел ответа. 🙁

Я создаю блестящее приложение и хочу использовать кнопку загрузки для вычисленных матриц. Есть ли какой-либо способ использовать write.csv для загрузки файла .csv с несколькими вкладками (для разных матриц), чтобы пользователю не приходилось загружать 3-4 разных файла?

Заранее благодарю

Комментарии:

1. CSV-файлы не могут иметь вкладок, но вы можете использовать пакеты типа XLConnect или xlsx для записи непосредственно в файл Excel, в том числе на разных листах.

2. И если файлы Excel не подходят, вы можете написать несколько CSV, zip их и экспортировать zip-файл пользователю.

3. Или используйте что-то, что может обрабатывать непрямоугольные данные, например json . Хотя это, возможно, менее удобно для пользователя, в зависимости от вашей аудитории.

4. Другая альтернатива XLConnect и xlsx : openxlsx . В противном случае я поддерживаю предложенное @Benjamin использование zip .

Ответ №1:

Добавление ко всем комментариям XLConnect — хорошая идея. Код обработчика загрузки будет:

 library(XLConnect)
output$dwnld <- donwloadHandler(
    filename = "xyz.xlsx"
},
    content = function(file) {
        wb <- loadWorkbook(file, create = TRUE)
        createSheet(wb, name="x")
        createSheet(wb, name="y")
        writeWorkSheet(wb, data=df_x, sheet=x, header=TRUE)
        writeWorkSheet(wb, data=df_y, sheet=y, header=TRUE)
        saveWorkbook(wb)
     }
)