URL <- "http://yoursharepointserver/_vti_bin/ListData.svc/yourlist"
data = xmlParse(readLines(URL))
## get the individual list items
items = getNodeSet(data, "//m:properties")
## convert to a data frame
df = xmlToDataFrame(items, stringsAsFactors = FALSE)
library(RCurl)
library(XML)
library(data.table)
URL <- "http://<site>/_vti_bin/owssvr.dll?Cmd=Display&Query=*&XMLDATA=TRUE&List={GUID_OF_LIST}"
rawData <- getURL(URL, userpwd = "username:password")
# in real life prompt for user credentials, don't put in script
xmlData <- xmlParse (rawData, options=HUGE, useInternalNodes=TRUE)
dataList <- xmlToList(xmlRoot(xmlData)[["data"]])
# check the system return, on my SP2010 server the data block is
# named rs:data so this works
dataMatrix <- do.call(rbind,dataList)
finalDataTable <- data.table(dataMatrix)
4条答案
按热度按时间11dmarpk1#
我一直在使用R阅读SharePoint 2010列表有一段时间了。基本上,我使用SharePoint Web服务从列表中返回结果,然后使用xmlToDataFrame转换为 Dataframe 。
因为我使用的是Web服务,所以我可以在返回结果之前过滤列表,这对于克服SharePoint Web服务的限制非常有帮助。下面的链接很有用…http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/01/21/introduction-to-querying-lists-with-rest-and-listdata-svc-in-sharepoint-2010.aspx
nafvub8i2#
如果ListData.svc正在运行和/或您对SharePoint服务器具有管理访问权限,那么门多萨的答案可能很有效。
如果这两个都不是真的:以下可能会起作用。在SharePoint 2010中,我是这样做的。如果在ListData.svc不存在时有更好的方法,我很想听听。
vshtjzan3#
上面的答案只适用于<= 1000行的列表。在URL中使用“$Top”和“$Skip”,您可以使用下面的函数,该函数多次迭代并从列表中导入所有数据,而不管大小。(这可能不是最干净的写作方式,但它的工作!)
tjrkku2a4#
上述方法对我不起作用。但是,下面的方法对我很有效。首先,我去了一个SharePoint列表,我点击了“提取为Excel文件”,生成了一个“.iqy”文件。“.iqy”文件的内容的示例在下面的文本变量中。我在需要隐藏信息的地方添加了一些X。这个方法很简单。基本上,首先创建一个临时的“.iqy”文件。之后,您使用Excel打开“.iqy”文件,它会自动提取SharePoint列表的信息并将信息保存在Excel工作表中。然后,您只需从Excel文件中提取信息。