使用控制台应用程序从sharepoint列表中提取数据

时间:2016-04-28 12:21:40

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

我一直在寻找最好的方法来做这件事,而我所发现的只是大量相互冲突的信息,而且我在崩溃的时候。

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

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

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

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

我连接到webservice,我需要使用的一个方法(GETLISTITEMS)在SP2013中不存在于所有教程中!!!

有人可以给我一个例子或链接到一个显示

的连接和查询示例的网站

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

请回答我的理智,谢谢

2 个答案:

答案 0 :(得分:2)

感谢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;
    }

答案 1 :(得分:0)

作为控制台应用程序我假设你的意思是在visual studio中使用c#console应用程序?只需google for SharePoint 2013 CSOM - ClientSide对象模型。你可以找到大量的信息。 它允许您从“远程”/客户端管理您的SP环境(以及读取列表)。您需要托管API dll

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