2013-07-27 2 views
5

온라인 ZIP 파일에서 Excel 파일을 읽을 수 있습니까?URL에서 압축 된 XLS 파일을 읽을 수 있습니까?

nuts = url("http://ec.europa.eu/eurostat/ramon/documents/nuts/NUTS_2010.zip") 
xlsx::read.xlsx(unz(nuts, "NUTS_2010.xls"), 1) 
close(nuts) 

를 아무 소용 ... : 나는 read.csv과 함께 할 것 같은

내가 뭔가를 시도하고있다.

+0

오류/출력을보고해야합니다. – Thomas

+0

예, 미안합니다 :'read.xlsx'는 "unknown path"를 반환합니다 ('unz()'연결을 이해하지 못합니다). –

답변

3

이 좀 덜 편리하지만,에 대한 방법은 다음과 같습니다 정기적으로 그것을 수행하려는 경우

basefn <- "NUTS_2010" 
urlPath <- "http://ec.europa.eu/eurostat/ramon/documents/nuts/" 
xlsFile <- paste0(basefn,".xls") 
zipFile <- paste0(basefn,".zip") 
download.file(paste0(urlPath,zipFile),zipFile) 
unzip(zipFile) 
## I had trouble with xlsx::read.xlsx, but gdata::read.xls was OK 
## xlsx::read.xlsx(xlsFile,1) 
gdata::read.xls(xlsFile) 
unlink(zipFile) 

당신은 항상 readZipURL <- function(urlPath,basefn) {...} 함수에이 팩 수 (다운로드 한 XLS를 정리 할 수 ​​있습니다) ... 너무

+0

고마워,하지만 난 ZIP 파일을 다운로드하지 않고 그것을 시도하고있어. ZIP을 디스크에 복사하지 않고도 코드가 작동 할 수 있습니까? –

+0

나는 unzipper *와 * XLS translator가하는 일에 대해 아주 신중하게 검토해야한다고 생각합니다. 그들은 스트리밍 모드에서 작업 할 수 있어야하고 파이프에서 작업 할 수 있어야합니다. 큰 ZIP 파일을 가지고 있기 때문에 디스크에 복사하고 싶지 않을 것입니다 ...? *'* gdata :: xls2sep' (보통 임시 파일을 생성하는)와 함께 뭔가를 넣을 수 있습니다. 대신에'read.csv'가 읽을 수있는 파이프로 보내면됩니다 ... 너무 까다 롭습니다. 내 여가 시간에. –

+0

당신의 해결책을 받아 들일 것입니다 -'read.xlsx'가 실제로 이런 방식으로 작동 할 수 있는지 잘 모르겠습니다.이 경우에는 ZIP을 다운로드하는 것을 피하기에는 너무 복잡해지고 있습니다. 호기심에서 벗어난 –

2

파일이 내가

에 내가 관심이 일부 CMS 파일을 읽고있다

options(java.parameters = "-Xmx4g") 
library(XLConnect) 
temp <- tempfile() 
zipfile <- paste0("https://www.cms.gov/Research-Statistics-Data-and-Systems/Statistics-Trends-and-Reports/MCRAdvPartDEnrolData/Downloads/" 
        ,year,"/",year,"-", "Low-Income-Subsidy-Contract-Enrollment-by-County.zip") 
download.file(zipfile,temp) 

filename <- paste0("WEB Tables LIS by state -county ",month2,"-","1","-",year,".xlsx") 

temp1 <- unzip(temp) 
assign(paste0("scc_pdp_lis_",year),readWorksheetFromFile(temp1,sheet=1,startRow=7,header=F)) 

나를 위해 일한