r - 如何使用 RODBC 或 RCurl 从 R 中受密码保护的 Sharepoint 2007 站点打开 Excel 2007 文件?

标签 r sharepoint-2007 excel-2007 rodbc rcurl

我有兴趣使用 RODBCR 2.11.1 中打开 Excel 2007 文件。 Excel 文件位于 MOSS2007 网站的共享文档页面中。我目前将 .xlsx 文件下载到我的硬盘,然后使用以下代码导入到 R:

library(RODBC)
con<-odbcConnectExcel2007("C:/file location/file.xlsx")
data<-sqlFetch(con, "worksheet name")
close(con)

当我在 odbcConnectExcel2007 连接中输入文档的 web url 时,会弹出一条错误消息:

ODBC Excel Driver Login Failed: Invalid internet Address.

然后是我的 R 控制台中的以下消息:

 ERROR: Could not SQLDriverConnect

如果您能提供任何见解,我们将不胜感激。

谢谢!


**更新**

我尝试下载的网站受密码保护。我使用包 RCurl 中的方法“getUrl”尝试了另一种方法:

x = getURL("http://website.com/file.xlsx", userpwd = "uname:pw")

我收到的错误是:

curlPerform(curl = curl, .opts = opts, .encoding = .encoding) 错误: 字符串中嵌入 nul:'PK\003\004\024\0\006\0\b\0\0\0!\0dA»ï\001\0\0O\n\0\0\023\0Ò\001 [Content_Types].xml ¢È\001(\0\002\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\

我不知道这是什么意思。任何帮助,将不胜感激。谢谢!

最佳答案

两个解决方案对我有用。

  1. 如果您不需要自动执行提取数据的脚本,您可以 map a network drive指向要从中提取 Excel 文档的共享点文件夹。

  2. 如果您需要自动化脚本每隔几分钟提取一次 Excel 文件,我建议在自动将文件保存到本地驱动器的请求中发送您的身份验证凭据。您可以从那里将其读入 R 以进行进一步的数据整理。

library("httr")   
library("openxlsx")
 
user <- <USERNAME>
password <- <PASSWORD>

url <- "https://sharepoint.company/file_to_obtain.xlsx"

httr::GET(url,
 authenticate(user, password, type="ntlm"),
 write_disk("C:/tempfile.xlsx", overwrite = TRUE))

df <- openxlsx::read.xlsx("C:/tempfile.xlsx")

您可以通过单击共享点位置并删除文件结尾(xlsx、xlsb、xls 等)后的“?Web=1”来获取文件的正确 URL。 USERNAME 和 PASSWORD 通常是 Windows 凭据。它有助于将它们存储在 key 管理器中(例如:

library("keyring")
keyring::key_set_with_value(service = "Windows", username = "Key", password = <PASSWORD>) 

然后通过

进行身份验证
authenticate(user, kreyring::key_get("Windows", "Key"), type="ntlm")

在某些情况下,通过可能就足够了

authenticate(":", ":", type="ntlm")

如果只需要您的 Windows 凭据并且代码正在您的计算机上运行。

关于r - 如何使用 RODBC 或 RCurl 从 R 中受密码保护的 Sharepoint 2007 站点打开 Excel 2007 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962095/

相关文章:

r - 如何读取R语言中的日期格式

r - facet_grid问题: input string 1 is invalid in this locale?

r - 如何按 A 列在 R 中生成唯一值并在 B 列中保留最大值的行

vba - Excel 运行时错误 16 表达式太复杂

excel - 使用 VBA 方法通过 Bing API 获取距离

json - 如何使用 jsonlite 包将数据从 json 格式导入 R

c# - 在 Sharepoint SiteData Web 服务中使用 GetChanges

sharepoint - 获取 Sharepoint 门户网站的(公共(public))Internet URL

ms-office - SharePoint与Office 2010兼容吗?

Excel 2007 获取公式不引用的单元格值