【问题标题】:Using a Console App to Extract a data from sharepoint list使用控制台应用程序从共享点列表中提取数据
【发布时间】:2019-09-24 00:08:15
【问题描述】:

我一直在寻找最好的方法来做这件事几个小时,我发现的只是大量相互矛盾的信息,而且我快要崩溃了。

我有一个 sharepoint 2013 网站,上面自然有一个列表。

我希望连接到此列表并将信息提取到数据表中。应该没那么难吧……

所以我尝试过的选项, 我最初计划在 ssis 上提取信息并在最终目的地之前对其进行转换。 显然有一个很棒的小适配器,共享点列表适配器......不适用于 SSIS 13!当然,这不是我可以使用的唯一版本。

然后我阅读了一个名为 lists.asmx 的 web 服务,当被调用和查询时,它应该返回一个 xml 版本的表格......太棒了!

我连接到 web 服务,我需要使用的一种方法 (GETLISTITEMS) 在所有教程中都不存在于 SP2013 中!!!

谁能给我一个例子或将我链接到显示两者的连接和查询示例的网站

A 通过 SSIS 13 提取数据 B 如何连接到SP站点并提取表信息。

请恢复我的理智,谢谢

【问题讨论】:

    标签: c# ssis console-application sharepoint-2013


    【解决方案1】:

    感谢 Verthosa 为我指明了正确的方向,CSOM 绝对是必经之路,尽管它需要一些阅读和实验。

    对于任何正在寻找一个简单的类来拉列表的人下面是我的类,它将列表数据转换为数据表以便于调用。

    您必须添加 Using 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;
        }
    

    【讨论】:

      【解决方案2】:

      作为控制台应用程序,我假设您的意思是 Visual Studio 中的 C# 控制台应用程序?只需 google 即可获得 SharePoint 2013 CSOM - ClientSide 对象模型。您可以找到大量相关信息。 它允许您从“远处”/客户端管理您的 SP 环境(以及阅读列表)。您需要托管 API dll

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

      【讨论】:

        猜你喜欢
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多