使用R从Sharepoint访问Excel文件

jim*_*616 14 sharepoint r import-from-excel

我正在尝试编写一个R脚本来访问存储在我公司的Sharepoint页面上的Excel文件,以便我可以进行一些计算并绘制结果.我已经尝试了各种方法(download.file,RCurl getURL(),gdata),但我似乎无法弄清楚如何做到这一点.网址为HTTPS,应该有用户名和密码.我与这段代码最接近:

require(RCurl)
URL<-"https://companyname.sharepoint.com/sites/folder/_layouts/15/WopiFrame.aspx?sourcedoc={2DCC2ED7-1C13-4910-AFAD-4A9ACFF1C797}&file=myfile.xlsx&action=default'  
f<-getURL(URL,verbose=T,ssl.verifyhost=F,ssl.verifypeer=F,userpwd="mylogin:mypw") 
Run Code Online (Sandbox Code Playgroud)

这似乎连接(虽然用户名和密码似乎并不重要)并返回

> f  
[1] "<html><head><title>Object moved</title></head><body>\r\n<h2>Object moved to <a href=\"https://companyname.sharepoint.com/sites/_layouts/15/WopiFrame2.aspx?sourcedoc={2DCC2ED7-1C13-4910-AFAD-4A9ACFF1C797}&amp;file=MyFile.xlsx&amp;action=default\">here</a>.</h2>\r\n</body></html>\r\n"`
Run Code Online (Sandbox Code Playgroud)

但是,我不知道该做什么,或者即使我走在正确的轨道上.任何帮助将不胜感激.

小智 10

我用

library(readxl) read_excel('//companySharepointSite/project/.../ExcelFilename.xlsx', 'Sheet1', skip=1)

注意,不https:,有时我必须先打开文件(即剪切并粘贴//companySharepointSite/project/.../ExcelFilename.xlsx到浏览器的地址栏)

彼得A.

  • 这对我不起作用,它只是返回一个 html 说明我需要登录。想法? (3认同)

Nic*_*ngo 7

我发现其他答案对我不起作用,也许是因为我使用的是 Mac,它显然不能很好地与 Sharepoint 等 Microsoft 产品配合使用。

最终不得不将其分成两部分:首先将 Excel 文件下载到磁盘,然后单独读取该 Excel 文件。

library(httr)
library(readxl)

# the URL of your sharepoint file
file_url <- "https://yoursharepointsite/Documents/yourfile.xlsx"

# save the excel file to disk
GET(file_url, 
    authenticate(active_directory_username, active_directory_password, "ntlm"),
    write_disk("tempfile.xlsx", overwrite = TRUE))

# save to dataframe
df <- read_excel("tempfile.xlsx")
df

# remove excel file from disk
file.remove("tempfile.xlsx")
Run Code Online (Sandbox Code Playgroud)

这样就完成了工作,但如果有人知道如何避免写入磁盘的临时步骤,我们会很感兴趣。

注意:根据您的特定机器/网络/Sharepoint 配置,您也可以仅使用authenticate(":",":","ntlm")答案


小智 5

我无法使用 R 中上述答案的提示来完成此任务(我尝试了在该网站上找到的许多方法)。然而,只是为了强调上面 @RyanBradley 的回应,特别是 @ZS27 的回应:

相反,我必须使用OneDrive 桌面客户端(Windows) 才能将sync文件夹复制到我的计算机上。较新版本的 SharePoint(如 MS Teams 中的版本)sync在文档库/文件夹中具有与 OneDrive 交互的按钮或功能。

这与将文件夹安装为网络驱动器的功能等效,因此 R 与该文件交互,就好像它是文件系统的一部分一样。对我有用。