将另存为网页的Excel文件导入R

时间:2018-07-23 15:20:25

标签: r excel

我想使用R打开另存为网页的Excel文件,并且不断收到错误消息。

所需步骤为:
1)将文件上传到RStudio
2)将格式更改为数据框/小标题
3)将文件另存为xls

在Excel中打开文件时收到的消息是文件格式(excel网页格式)和扩展名格式(xls)不同。我已经尝试过this answer中的步骤,但无济于事。我将不胜感激!

2 个答案:

答案 0 :(得分:0)

我希望没有链接到实际文件的人,任何人都可以给您确切的答案。复杂的是,许多服务将以.xls或.xlsx格式写入文件,而它们不是有效的Excel格式。这样做是因为Excel非常普遍,并且某些非技术人员对使用Excel文件比使用csv文件更有信心。现在,文件将以Excel 可以处理的格式存储(因此出现警告消息),但是R的库更加严格,并且看不到它们期望的实际文件类型,因此他们失败了。

也就是说,当我上次遇到此问题时,以下步骤对我有用。服务正在输出.xls文件,这些文件实际上只是以.xls文件扩展名保存的HTML表。

1)下载文件以在本地使用。您当然可以编写脚本,例如download.file(),但此步骤有助于消除直接使用网页或连接所涉及的其他错误。

2)使用readHTMLTable()从XML包中加载完整文件

library(XML)
dTemp = readHTMLTable([filename], stringsAsFactors = FALSE)

这将返回数据帧列表。您的结果集很可能是第二个元素或更高的元素(有关示例,请参见?readHTMLTable)。您可能需要在此处进行实验并探索列表结构,因为它可能具有嵌套列表。

3)提取相关的列表元素,例如

df = dTemp[2]

您还提到将最终数据帧写为xls文件,这表明您希望使用旧格式。为此,我建议使用软件包WriteXLS

答案 1 :(得分:0)

我严重怀疑Excel是否已“另存为网页”。我很确定文件只是放在服务器上,而您所要做的就是去获取它。某些文件(特别是Excel和h5)是二进制文件,而不是文本文件。这需要一个附加的设置来警告R它是一个二进制文件,应进行适当的处​​理。

myurl <- "http://127.0.0.1/imaginary/file.xlsx"
download.file(url=myurl, destfile="localcopy.xlsx", mode="wb")

或者供下载器使用,并输入类似的内容。

myurl <- "http://127.0.0.1/imaginary/file.xlsx"
download(myurl, destfile="localcopy.csv", mode="wb")