使用C#如何访问SharePoint网站上的列表

   在C#中可以通过Web Service的方式访问SharePoint网站,从而获取到SharePoint网站上的相关列表中的数据,具体操作如下(本文在VS2005中测试通过)

   1. 打开VS2005,新建一个控制台程序

   2. 添加Web Service服务的引用,SharePoint中列表的Web Service一般地址为"http://server-name/_vti_bin/Lists.asmx",其中的server-name为SharePoint网站所在的服务器的名称或者IP地址,添加后,将Web Service的名称命名为WebListService

   3. 在项目中添加以下using的引用

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Xml;  
    using System.Windows.Forms;
    using System.Drawing;
    using System.Web;
    using System.Threading;  
   4. 编写连接SharePoint服务器的访问代码

        static WebListService.Lists GetWebLists()
        {
            //初始化Lists类
            WebListService.Lists webLists = new WebListService.Lists();

            //设置用户名,密码
            //这里面需要设置服务器管理员的密码以提升权限,否则会返回401错误
            NetworkCredential ntc = new NetworkCredential("administrator", "pin");            

            //设置webLists的用户名,密码
            webLists.Credentials = ntc;

            //设置URL            
            webLists.Url = "http://server-name/_vti_bin/Lists.asmx";

            //返回Lists类
            return webLists;
        }

   5.  编写获取列表中的Item内容,返回的将是XMLNode格式的内容

        static XmlNode GetListItems(WebListService.Lists webLists, string listName)
        {
            XmlNode xmlNode = null;

            if (listName == null)
            {
                return null;
            }

            try
            {             
                //第一个参数为列表的GUID
                //第二个参数为列表视图的GUID,如果为空,表示查询的是默认视图
                xmlNode = webLists.GetListItems(listName, null, null, null, null, null, null);
            }
            catch (System.Exception ex)
            {
                Console.WriteLine("Error Msg: \n" + ex.Message);
            }            

            return xmlNode;
        }
   6. 编写分析XMLNode的函数,并取得想要得数据

        static void FindWebNewItem()
        {
            while (true)
            {
                WebListService.Lists webLists = GetWebLists();

                string listName = "{A3E153B3-CF7A-4782-831E-FAB7AFD4FAEF}";
                XmlNode xmlNode = GetListItems(webLists, listName);

                string listTitle = null;
                foreach (XmlNode node in xmlNode)
                {
                    if (node.Attributes != null)
                    {
                        listTitle = xmlNode.OuterXml;

                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml(listTitle);

                        doc.Save(Directory.GetCurrentDirectory() + "\\item.xml");

                        XmlReader xr = XmlReader.Create(Directory.GetCurrentDirectory() + "\\item.xml");

                        while (xr.Read())
                        {
                            if (xr.LocalName == "row")
                            {
                                //获取相应的属性,根据实际情况进行修改
                                string strID = xr.GetAttribute("ows_FileRef");
                                string strTitle = xr.GetAttribute("ows_LinkTitle");
                                string strUser = xr.GetAttribute("ows_AssignedTo");

                                if (strUser != "")
                                {
                                    continue;
                                }
                               
                                //如果发现有新的问题,则弹出一个对话框,在上面填上指向该问题的网址 
                                Form msg = new Form();
                                msg.Text = "发现新的问题...";
                                msg.Width = 500;
                                msg.Height = 130;
                                msg.StartPosition = FormStartPosition.CenterScreen;

                                Label lbTitle = new Label();
                                lbTitle.Text = "标题: " + strTitle;
                                lbTitle.Left = 10;
                                lbTitle.Top = 10;
                                lbTitle.Width = 450;
                                lbTitle.Visible = true;
                                msg.Controls.Add(lbTitle);

                                LinkLabel llHttpAddress = new LinkLabel();
                                llHttpAddress.Text = "http://server-name/support/Lists/List/DispForm.aspx?ID=" + strID.Substring(0, strID.IndexOf(';', 0));
                                llHttpAddress.Left = 10;
                                llHttpAddress.Top = 40;
                                llHttpAddress.Width = 450;
                                llHttpAddress.Visible = true;
                                llHttpAddress.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(lblHttp_LinkClicked);
                                msg.Controls.Add(llHttpAddress);

                                msg.ShowDialog();
                            }
                        }
                    }
                }

                Thread.Sleep(1000*60);
            }
        }
   7. 添加响应第6步操作中的LinkLabel的鼠标单击响应函数

        static private void lblHttp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            LinkLabel llHttpAddress = (LinkLabel)sender;
            System.Diagnostics.Process.Start(llHttpAddress.Text);
            Form form = (Form)llHttpAddress.Parent;
            form.Close();
        }
   8. 编写Main函数

        static void Main(string[] args)
        {
            ThreadStart ts = new ThreadStart(FindWebNewItem);
            Thread th = new Thread(ts);
            th.Start();         

            Console.ReadLine();
        }
   9. 到此,就可以查询相应的数据内容了,是不是很简单?哈哈


C#中,通过Microsoft SharePoint SDK可以方便地将数据上传到SharePoint网站。以下是一个简单的步骤概述: 1. 安装依赖:首先,你需要安装`Microsoft.SharePoint.Client`库,这通常可以通过NuGet包管理器完成。 2. 配置凭据:创建一个`ClientContext`对象,需要提供SharePoint站点URL和合适的权限凭证(如应用程序密码、OAuth令牌等)。 ```csharp using Microsoft.SharePoint.Client; ClientContext context = new ClientContext("https://your-site.sharepoint.com"); context.AuthenticationMode = ClientAuthenticationMode.AppOnlyWithCertificate; // 或者 context.Credentials = new SharePointOnlineCredentials(username, password); ``` 3. 创建列表或文件:确定你想上传数据的目标位置,可能是已存在的列表或新建一个文件。如果是文件,可以使用`FileCreationInformation`。 ```csharp List list = context.Web.Lists.GetByTitle("YourListName"); FileCreationInfo fileCreateInfo = new FileCreationInfo(); fileCreateInfo.ContentStream = System.IO.File.OpenRead("path_to_your_file"); ``` 4. 执行上传:调用`ListItemCreationInformation`或`File.SaveBinaryDirect`方法将数据上传。 ```csharp ListItem item = list.AddItemAsynchronously(fileCreateInfo).Result; item.Update(); context.ExecuteQueryAsync(); // 或者对于文件直接保存 Microsoft.SharePoint.Client.File uploadFile = list.RootFolder.Files.AddBinaryDirect(context, "file_name", fileCreateInfo.ContentStream); uploadFile.CheckOut(); uploadFile.Publish(); context.Load(uploadFile); context.ExecuteQueryAsync(); ``` 5. 错误处理和清理:记得添加适当的错误检查和finally块来处理可能出现的异常,并确保在操作完成后关闭所有资源。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值