Fr.
Fr.

Reputation: 2895

Can R read a zipped XLS file from a URL?

Is it possible to read an Excel file from an online ZIP file?

I have been trying something like I would do with read.csv:

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

… to no avail.

Upvotes: 5

Views: 1491

Answers (2)

user1617979
user1617979

Reputation: 2480

This worked for me

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

I am reading some CMS files I was interested on

Upvotes: 2

Ben Bolker
Ben Bolker

Reputation: 226936

It's a little less convenient, but how about:

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)

You can always pack this into a readZipURL <- function(urlPath,basefn) {...} function if you want to do it on a regular basis (you might want to clean up the downloaded XLS file too ...)

Upvotes: 3

Related Questions