我需要(非手动)下载此文件并将内容转换为数据帧,忽略几行的功能将非常有用。我正在专门寻找一个用R或Python编写的解决方案。
文件本身可以从以下位置获取:
http://horizons.prod.transmissionmedia.ca/GetDailyFundSummaryExcel.aspx?lang=en
以下是我目前所做的:
Error: IllegalArgumentException (Java): Your InputStream was neither an OLE2 stream, nor an OOXML stream
)Error in odbcConnectExcel("xl.file") :
odbcConnectExcel is only usable with 32-bit Windows
)XLRDError: Unsupported format or corrupt file
)Error in xls2sep(xls, sheet, verbose = verbose, ..., method = method, : Intermediate file '...' missing!
)如果您在记事本中打开文件,它是一个xml文件,当您在Excel中打开时,您会收到一条警告消息“格式和扩展名不匹配”。在
我可以自己探索的想法也很有用,如果你没有答案,请评论。在
到目前为止,我对XML/regex的尝试:
library(XML)
library(stringr)
download.file("http://horizons.prod.transmissionmedia.ca/GetDailyFundSummaryExcel.aspx?lang=en", destfile = "horizons.xls")
doc <- readLines(con = "horizons.xls")
doc <- str_extract(doc,"<Table[^>]*>(.*?)</Table>")
doc <- xmlParse(doc)
listing <- xpathApply(doc, "//Row", xmlToDataFrame)
listing <- listing[4:length(listing)]
listing <- do.call(rbind,lapply(listing, t))[,6:16]
listing[,3:11] <- gsub("[^-.0-9]", "", listing[,3:11])
listing <- as.data.frame(listing, row.names = NULL,stringsAsFactors = FALSE,)
listing$V1 <- str_replace_all(listing$V1, "[^a-zA-Z0-9]", " ")
listing[5:11] <- lapply(listing[5:11],as.numeric)
names(listing) <- c(
"Product Name",
"Ticker",
"Class",
"Price",
"Price % Change",
"Volume",
"NAV/unit",
"NAV % Change",
"% Prem/Disc",
"Outst. Shares"
)
这也许不是最好的办法,但会有助于提高一些人的认识。在
从xml格式的excel表中标识名称。我想知道,以下名称是xml格式的excel工作表的标准名称,而且,当有多个工作表时,工作表的名称是否以数字作为后缀递增(例如:Worksheet1、Worksheet2等等)。在
^{pr2}$输出
也许在R中可以这样做:
相关问题 更多 >
编程相关推荐