如何以编程方式汇总Sharepoint中的现有文档

时间:2015-04-10 14:38:16

标签: c# sharepoint sharepoint-2010

eveyone。

我不确切知道这是否可行,但它对我有很大帮助。

这是一个场景:我们在Sharepoint中制作了一个“teamplace”,我们在不同的文件夹中有很多技术文档。问题是我们失去了对它的控制,现在我们需要创建现有文件的摘要。因此,希望我们不需要进入每个文件夹和子文件夹并记下每个文件名,我想知道是否可以在C#中以编程方式执行此操作。

简而言之,有没有一种方法可以通过C#应用程序在Sharepoint中连接(我可以使用我的网络帐户,它可以获得访问权限),然后检索现有文件的列表,或者至少获取它们的路径?如果是这样,那太复杂了吗?

提前谢谢。

3 个答案:

答案 0 :(得分:1)

过去,当我想通过C#与Sharepoint连接时,我使用了Microsoft提供的Web服务。 列表网络服务可在http://domain/sites/yourrepository/ _vti_bin / lists.asmx

获取

答案 1 :(得分:1)

此主题已经讨论过,您可以使用PowerShell执行此操作。

在这里您可以找到所需信息: List of documents in Entire Sharepoint Site

答案 2 :(得分:0)

感谢你的答案,Isaac是一个ProjectedJetpacks,但我可以用另一种方式解决这个问题。我使用了Microsoft.Sharepoint.Client.dll程序集(您需要安装Sharepoint Client SDK)并浏览了网站内的所有列表。然后,在每个文件夹中,我搜索文件夹(并使用递归方法直到文件夹树的最后一个叶子)和每个文件夹中的文件。最后,将我需要的所有文件信息放在CSV文件中。这项工作的一些例子如下:

ClientContext context = new ClientContext("<websiteurl>");
Web web = context.Web;
context.Load(web);
context.ExecuteQuery();
var q = from list in web.Lists
                where <put condition here>
                select list;
var r = context.LoadQuery(q);
context.ExecuteQuery();

foreach (var list in r)
{
   context.Load(list.RootFolder);
   context.ExecuteQuery();
   ...
   //To get folders
   GetFolders(context, list.Root.Folders);
   //To get files
   GetFiles(context, list.RootFolder.Files);
 }

重要的是记住将每个卸载的对象放在“context.Load()”中,然后调用“context.ExecuteQuery()”。

我希望这可以对其他人有所帮助。

最好的问候。