2014-01-27 4 views
13

누구나 R 반짝이의 다운로드 핸들러를 사용하여 XLConnect로 새로 만든 Excel 파일을 다운로드하려고 했습니까?R 반짝이 XLConnect에서 Excel 파일 다운로드

output$downloadData <- downloadHandler(

filename = function() { "output.xlsx" }, 

    content = function(file){ 
     wb <- loadWorkbook(file, create = TRUE) 
     createSheet(wb, name = "Sheet1") 
     writeWorksheet(wb, c(1:3), sheet = "Sheet1") # writes numbers 1:3 in file 
     saveWorkbook(wb) 
    } 
) 

나는 .CSV없이 문제를 다운로드 아무 문제가 : 핸들러가 거기 server.R에서

downloadButton('downloadData', 'Download') 

하십시오 ui.R에서

는 하찮은 라인이 XLConnect를 사용하여 Excel 파일을 만듭니다. 나는 위와 같이 코드를 실행할 때하지만 내 크롬 브라우저에서 다음과 같은 오류가 발생합니다 :

는 IllegalArgumentException (자바) :하지 "file1b683b9323bc"파일 확장자 지원을! * .xls 및 * .xlsx 만 허용됩니다.

내가 알 수있는 한, XLConnect는 임시 파일에 쓸 수 없습니다.

해결 방법이나 해결 방법이 있습니까?

한 가지 옵션은 특정 위치에 파일을 저장 한 다음 해당 파일을 가리키는 다운로드 링크를 만드는 것입니다. 그러나, 이것은 다수 사용자가 havok를 일으키는 원인이 될 것이기 때문에 아주 빛나지 않습니다.

많은 감사

마커스

답변

12

content(...) 기능이를 사용해보십시오; saveWorkbook(...).xlsx 확장을 필요로하는 반면 그것은

content = function(file){ 
     fname <- paste(file,"xlsx",sep=".") 
     wb <- loadWorkbook(fname, create = TRUE) 
     createSheet(wb, name = "Sheet1") 
     writeWorksheet(wb, c(1:3), sheet = "Sheet1") # writes numbers 1:3 in file 
     saveWorkbook(wb) 
     file.rename(fname,file) 
    } 

문제는 file가 임의로 생성 된 임시 파일을 확장하지 않고 있다는 것이다 ... 나를 위해 작동합니다. 따라서 .xlsxfile에 추가하고 모든 XLConnect 조작에이를 사용하고 최종 파일의 이름을 원래 이름으로 바꿉니다 (예 : 확장자를 제거).

+0

그렇게 많은 의미가 있으며 작동합니다! 감사. – steinbock