关于如何使用XLConnect包将Microsoft Excel文件读入R,有很多很好的例子,但我找不到任何如何直接从URL读取Excel文件的示例。下面的可重现示例返回“FileNotFoundException (Java)
”。但是,我知道该文件存在是因为我可以通过将URL粘贴到浏览器中直接提取它。
fname <- "https://www.misoenergy.org/Library/Repository/Market%20Reports/20140610_sr_nd_is.xls"
sheet <- c("Sheet1")
data <- readWorksheetFromFile(fname, sheet, header=TRUE, startRow=11, startCol=2, endCol=13)
虽然URL的前缀是“https:
”,但它是一个公共文件,不需要用户名或密码。
我首先尝试使用download.file(fname, destfile="test.xls")
下载该文件并收到一条消息,说明它已下载但是当我尝试在Excel中打开它以检查它是否成功时,我得到一个Excel弹出框,说“在'test.xls'中发现了不可读的内容。
以下是我系统的具体内容:
计算机:64位戴尔正在运行 操作系统:Windows 7 Professional R版本:R-3.1.0
非常感谢任何协助。
答案 0 :(得分:2)
两件事:
尝试使用其他软件包 - 我知道 gdata 软件包 read.xls 函数支持网址
尝试在公开的xls文件中加载,以确保它不是特定网站的问题。
例如,您可以尝试:
library("gdata")
site <- "http://www.econ.yale.edu/~shiller/data/chapt26.xls"
data <- read.xls(site, header=FALSE, skip=8)
head(data)
答案 1 :(得分:2)
XLConnect不支持直接从URL导入。你必须使用例如download.file
首先将文件下载到本地计算机:
require(XLConnect)
tmp = tempfile(fileext = ".xls")
download.file(url = "http://www.econ.yale.edu/~shiller/data/chapt26.xls", destfile = tmp)
readWorksheetFromFile(file = tmp, sheet = "Data", header = FALSE, startRow = 9, endRow = 151)
或您最初提出的网址:
require(XLConnect)
tmp = tempfile(fileext = ".xls")
download.file(url = "https://www.misoenergy.org/Library/Repository/Market%20Reports/20140610_sr_nd_is.xls", destfile = tmp, method = "curl")
readWorksheetFromFile(file = tmp, sheet = "Sheet1", header = TRUE, startRow = 11, startCol = 2, endCol = 13)
答案 2 :(得分:2)
您可以使用RCurl
下载文件:
library(RCurl)
library(XLConnect)
appURL <- "https://www.misoenergy.org/Library/Repository/Market%20Reports/20140610_sr_nd_is.xls"
f = CFILE("exfile.xls", mode="wb")
curlPerform(url = appURL, writedata = f@ref, ssl.verifypeer = FALSE)
close(f)
out <- readWorksheetFromFile(file = "exfile.xls", sheet = "Sheet1", header = TRUE
, startRow = 11, startCol = 2, endCol = 15, endRow = 35)
> head(out)
Col1 EEI Col3 IESO MHEB Col6 PJM SOCO SWPP TVA WAUE Col12 Other Total
1 Hour 1 272 NA 768 1671 NA 148 200 -52 198 280 NA 700 4185
2 Hour 2 272 NA 769 1743 NA 598 200 -29 190 267 NA 706 4716
3 Hour 3 272 NA 769 1752 NA 598 200 -28 194 267 NA 710 4734
4 Hour 4 272 NA 769 1740 NA 598 200 -26 189 266 NA 714 4722
5 Hour 5 272 NA 769 1753 NA 554 200 -27 189 270 NA 713 4693
6 Hour 6 602 NA 769 1682 NA 218 200 -32 223 286 NA 714 4662
答案 3 :(得分:1)
library(relenium)
library(XML)
library(RCurl)
firefox=firefoxClass$new()
url="https://www.misoenergy.org/Library/Repository/Market%20Reports/20140610_sr_nd_is.xls"
url=sprintf(url)
firefox$get(url)
这将在R中打开一个Firefox实例并要求您下载该文件,然后您可以在下一行代码中打开该文件。我不知道任何可以从HTTPS打开Excel电子表格的R工具。
然后,您可以在保存文件时设置延迟,然后从下载文件夹中读取该表:
Sys.sleep(10)
sheet <- c("Sheet1")
data <- readWorksheetFromFile(path, sheet, header=TRUE, startRow=11, startCol=2, endCol=13)