【发布时间】:2015-03-05 09:25:25
【问题描述】:
我正在尝试读取存储在企业 Intranet SharePoint 网站上的 Excel 文件,并且正在使用在使用 Shiny Server 的 Linux 服务器上运行的 R Studio 中的“gdata”包来执行此操作。
我使用 gdata 从 MS Windows 环境中读取文件的结果很好,但在 Linux 服务器上运行脚本时似乎无法正常工作。这是基于以下信息:
http://r.789695.n4.nabble.com/trying-to-import-xls-or-xlsx-files-td3620580.html
我确实修改了 Linux 服务器上 Perl 路径的 R 脚本(与 Windows 上 perl.exe 的路径相比),这似乎工作正常。
文件地址是
"http://sharepoint2/ops/quality/metricspc/Metric OptIn List/temporary SPC Metric Opt-In List.xlsm"
这里是 R 代码:
# R read MS Excel xlsm file from SharePoint
# method using gdata - seems to work with SharePoint
# NOTE: requires 'perl' installed
#
# example from
# http://r.789695.n4.nabble.com/trying-to-import-xls-or-xlsx-files-td3620580.html
library(gdata)
fileurl =
# see fileurl above this code section - did this due to SO error message about not having 'sharepoint2' in the url
d.optin.init2 <- read.xls(fileurl,
sheet = "OPT-IN LIST",
perl = "/usr/bin/perl")
##### END CODE #####
使用的原始(基于 Windows)脚本perl = "C:\\Perl64\\bin\\perl.exe"
以下是产生的错误消息(在 Shiny Server 上使用 R Studio 从 Linux 运行时):
d.optin.init2 'http://sharepoint2/ops/quality/metricspc/Metric OptIn List/temporary SPC Metric Opt-In List.xlsm'
download.file(xls, tf, mode = "wb") 中的错误: 打不开网址
'http://sharepoint2/ops/quality/metricspc/Metric OptIn List/temporary SPC Metric Opt-In List.xlsm'另外:警告信息: 在 download.file(xls, tf, mode = "wb") : 无法打开:HTTP 状态为“400 Bad Request”
file.exists(tfn) 中的错误:'file' 参数无效
文件的路径(在 SharePoint 上)是一个 URL(显示在代码中),所以我认为 Linux 服务器和 MS SharePoint 之间的路由可能很简单。但由于这适用于我的 Windows,但不适用于我的 Linux,我想知道我可能错过了什么?
提前感谢您提供的任何见解。
(我没有附上 Excel 文件,因为我不确定它是否有助于解决这个问题。)
最好的问候,
悬崖
sessionInfo 的输出
会话信息() R 版本 3.1.0 (2014-04-10) 平台:x86_64-redhat-linux-gnu(64位)
语言环境: 1C
附加的基础包: 1 stats graphics grDevices utils datasets methods base
其他附加包: 1gdata_2.13.3 qcc_2.5
通过命名空间加载(未附加): 1MASS_7.3-31 gtools_3.4.1 tools_3.1.0
根据 hrbrmstr 和 Greg 提供的建议,我从 Linux 命令行尝试了 wget 和 curl。
wget 结果
卷曲结果
我可以与我们的 IT 人员一起解决问题。如果有人可以帮助我根据这些结果改进我可能向他们提出的问题,我会欢迎您提出意见。
再次感谢那些花时间回复的人。
更多跟进
@Gregory R. Warnes 我可以在 Linux 服务器上通过这个命令行使用 wget:
wget --http-user=myusername --http-passwd=mypassword(把文件地址放在这里)
这似乎访问了文件,弥合了 Linux 服务器和 Windows SharePoint 之间的鸿沟。
现在要弄清楚如何在 gdata R 脚本中包含此 AD 身份验证。
【问题讨论】:
-
你能从命令行
curl或wget文件吗? -
谢谢...感谢您的建议。我确实简要地探索了这个选项,但似乎我还没有掌握它。如果可能的话,我的偏好是在 R 内部进行管理;从 R 中读取文件与将其从 SharePoint 来回移动到 Linux 服务器。但我将进一步探索 curl 或 wget 选项。再次感谢。
标签: r