【发布时间】:2017-10-10 12:32:16
【问题描述】:
*您好,我正在尝试从一个唯一的 excel 文件中下载多个 csv 文件。我想从 excel 文件中下载(仅使用一个下载按钮)不同的表格。 我不明白为什么 for() 循环不起作用,我不知道该怎么办? 如果有人知道..
重点是下载不同的csv文件,它们在“wb”列表中(wb[1],wb[2]...) 谢谢。 例如,这是我与第三张表一起使用的代码(抱歉我的英语不好): 界面:
library(readxl)
library(shiny)
library(XLConnect)
fluidPage(
titlePanel("Export onglets en CSV"),
sidebarLayout(
sidebarPanel(
fileInput('fichier1','Choisissez votre fichier excel :',
accept = ".xlsx"),
fluidPage(
fluidRow(
column(width = 12,
numericInput("sheet","Indiquez l'onglet à afficher :",min = 1, value = 1),
tags$hr(),
textInput('text',"Indiquez le nom des fichiers :"),
tags$hr(),
h4("Pour télécharger les fichiers .csv :"),
downloadButton("download","Télécharger")
)
)
)),
mainPanel(
tabsetPanel(
tabPanel('Importation',
h4("Fichier de base:"),
dataTableOutput("contents"))
)
)
)
)
服务器:
function(input,output){
#Création data :
data <- reactive({
inFile<- input$fichier1
if (is.null(inFile)){
return(NULL)
}else{
file.rename(inFile$datapath,
paste(inFile$datapath,".xlsx", sep =""))
wb = loadWorkbook(paste(inFile$datapath,".xlsx",sep=""))
lst = readWorksheet(wb,sheet = getSheets(wb))
list(wb = wb, lst = lst)
}
})
#Sortie de la table :
output$contents <- renderDataTable({
data()$wb[input$sheet]
},options = list(pageLength = 10))
#Téléchargement :
output$download <- downloadHandler(
#for (i in 1:input$sheet){
filename = function(){
paste(input$text,"_0",3,".csv",sep = "")
},
content = function(file){
write.table(data()$wb[3],file,
sep = ';', row.names = F, col.names = T)
}
#}
)
}
【问题讨论】:
-
我不认为 for 循环可以工作。我认为要走的路是压缩它,..
-
是的,for 循环不起作用,这就是为什么我在前面加上 # 的原因。从今天早上开始,我一直在为这种情况寻找 zip() 的代码或示例,但我没有找到任何东西..和/或我不明白如何将不同的文件放入 zip 并下载它。您有任何想法/代码/示例或网站来解释 zip 功能吗?