2013-07-27 15 views
5

Bir Excel dosyasını çevrimiçi bir ZIP dosyasından okumak mümkün mü?R, bir URL'den sıkıştırılmış bir XLS dosyasını okuyabilir mi?

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

boşuna ...: Ben read.csv yapacağını gibi

şey çalışıyorlar.

+0

Aldığınız hatayı/çıktısını bildirmelisiniz. – Thomas

+0

Evet, üzgünüz: 'read.xlsx'," bilinmeyen yol "u döndürür (' unz() 'bağlantısını anlamıyor). –

cevap

3

O biraz daha az elverişli, ama yaklaşık edebilirsiniz: Eğer düzenli olarak bunu yapmak istiyorum

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) 

Her zaman readZipURL <- function(urlPath,basefn) {...} fonksiyonu içine bu paketi olabilir (indirdiğiniz XLS temizlemek isteyebilirsiniz) ... çok

+0

Teşekkürler, ama ZIP dosyasını indirmeden yapmaya çalışıyorum. Kodunuz ZIP’i diske kopyalamaya gerek kalmadan çalışabilir mi? –

+0

Sanırım hem unzipper * hem de XLS çeviricisinin ne yaptıklarına dikkat etmelisiniz - her ikisi de bir akış modunda çalışabilme/borudan çalışma kapasitesine sahip olmalıdır. Sanırım diske kopyalamak istemiyorsunuz çünkü büyük bir ZIP dosyasına sahip olacaksınız ...? "* Bir satırda" glds :: xls2sep "(normalde geçici bir dosya oluşturur) ile birlikte birşeyler koyabilirsin, bu yüzden read.csv’nin okuyabileceği bir boruya ... bir araya getirmem çok zor boş zamanlarımda olsa da. –

+0

Çözümünüzü kabul ediyorum - read.xlsx'nin gerçekten bu şekilde çalışıp çalışmayacağı konusunda hiçbir fikrim yok ve bu durumda ZIP'i indirmekten kaçınmak çok karmaşık hale geliyor (bu büyük bile değil). –

2

dosyası Bu benim

ben ilgilendi bazı CMS dosyalarını okuyorum

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)) 

benim için çalıştı

İlgili konular