2016-04-28 52 views
0

我一直在尋找幾個小時來達到這個目的的最佳方法,我發現所有的信息都是大量矛盾的信息,並且在分解點處是即時消息。使用控制檯應用程序從分享點列表中提取數據

我有一個SharePoint站點,自然有一個列表。

我希望連接到此列表並將信息提取到數據表中。應該不是那麼難...

所以我試過的選項, 我最初計劃在ssis上提取信息並將其轉換爲最終目的地之前。 有一個偉大的小適配器顯然是這個共享點列表適配器...不適用於SSIS 13!當然這並不是我可以使用的唯一版本。

然後我讀到一個叫做lists.asmx的web服務,當它被調用和查詢時,應該返回一個xml版本的表...太棒了!

我連接到webservice,並且我需要使用的一個方法(GETLISTITEMS)在所有教程中都不存在於SP2013中!

有人可以給我一個例子或鏈接我的網站上,顯示無論是

A的連接,查詢示例通過SSIS 13 乙拉數據如何連接到SP的網站,並提取表的信息。

請回我的理智,謝謝

回答

0

的控制檯應用程序我假定你的意思是在Visual Studio中的C#控制檯應用程序?只需google for SharePoint 2013 CSOM - ClientSide對象模型。你可以找到大量的信息。 它允許您從'遠處'/客戶端管理您的SP環境(以及讀取列表)。你所需要的管理API的dll

https://msdn.microsoft.com/en-us/library/office/fp179912.aspx

1

感謝Verthosa指着我在正確的方向上,CSOM肯定是去,即使它率先通過和實驗一些閱讀的方式。

對於任何正在尋找一個很好的簡單類來拉列表的人下面是我的類,它將列表數據轉換爲一個數據表以便於調用。

必須添加使用Microsoft.SharePoint.Client - 如果不存在,請下載SP2010/2013客戶端SDK),並在您的引用中包含程序集擴展Microsoft.SharePoint.Client + Microsoft.SharePoint.Runtime。

電話方法

DataTable dt = new DataTable(); 
dt = ClassName.GetList("http://SharepointSite", "Name of List Table"); 

取和轉換類方法

public static DataTable GetList(string site, string listname) 
    { 
     ClientContext ctx = new ClientContext(site); 

     List lst = ctx.Web.Lists.GetByTitle(listname); 

     CamlQuery cq = CamlQuery.CreateAllItemsQuery(); 

     ListItemCollection lic = lst.GetItems(cq); 

     ctx.Load(lic); 

     ctx.ExecuteQuery(); 
     DataTable dt = new DataTable(); 

     foreach (var field in lic[0].FieldValues.Keys) 
     { 
      dt.Columns.Add(field); 
     } 

     foreach (var item in lic) 
     { 
      DataRow dr = dt.NewRow(); 

      foreach (var obj in item.FieldValues) 
      { 
       if (obj.Value != null) 
       { 
        string type = obj.Value.GetType().FullName; 

        if (type == "Microsoft.SharePoint.Client.FieldLookupValue") 
        { 
         dr[obj.Key] = ((FieldLookupValue)obj.Value).LookupValue; 
        } 
        else if (type == "Microsoft.SharePoint.Client.FieldUserValue") 
        { 
         dr[obj.Key] = ((FieldUserValue)obj.Value).LookupValue; 
        } 
        else 
        { 
         dr[obj.Key] = obj.Value; 
        } 
       } 
       else 
       { 
        dr[obj.Key] = null; 
       } 
      } 

      dt.Rows.Add(dr); 
     } 

     return dt; 
    } 
相關問題