ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用C# CSOM 读取 O365 Share Point Online 中的文档库,一级文件夹,二级文件夹...

2020-03-27 11:01:45  阅读:266  来源: 互联网

标签:Name Point C# SubFolder list 文件夹 Folder Model clientContext


  最近有个项目,背景是读取 SPO 中文档库中的文件夹中的 EXCLE和CSV 文件   ,有个问题是需要循环遍历每层的文件夹并取里面的EXCLE和CSV文件,然后将里面的内容同步到SQL SERVER数据库中。

  由于项目原因部署的程序也不是内网,所以使用CSOM方式读取文件并取数据

  关于读取SPO中的文档库以及文件夹的部分Code:

  第一种方式:

  这种方式只能取文档库的第一层文件夹

 List list = web.Lists.GetByTitle(Doc_DDMARLT_Name);
            clientContext.Load(list);
            clientContext.ExecuteQuery();
            clientContext.Load(list.RootFolder);
            clientContext.Load(list.RootFolder.Folders);

            clientContext.ExecuteQuery();

            List<Model_Folder> _listFolder = new List<Model_Folder>();

            foreach (Folder SubFolder_1 in list.RootFolder.Folders)
            {
                if (SubFolder_1.Name.Equals(Doc_DDMARLT_Name_subFolder_CSV))
                {
                    Model_Folder Model_Folder = new Model_Folder();

                    Model_Folder.FolderName = SubFolder_1.Name;
                    string _url_SubFolder_2 = SubFolder_1.Name;             

                    _listFolder.Add(Model_Folder);
                }
            }

第二种方式:

 

     /// <summary>
        /// 读取CSV中数据
        /// </summary>
        /// <param name="clientContext"></param>
        /// <param name="Doc_DDMARLT_Name">文档库的名称</param>
        /// <param name="Doc_DDMARLT_Name_subFolder_CSV">子文件夹的名称</param>
        protected static void readCsv_data(Web web, ClientContext clientContext, string Doc_DDMARLT_Name, string Doc_DDMARLT_Name_subFolder_CSV)
        {

            List list = web.Lists.GetByTitle(Doc_DDMARLT_Name);
            clientContext.Load(list);
            clientContext.ExecuteQuery();
            clientContext.Load(list.RootFolder);
            clientContext.Load(list.RootFolder.Folders);

            clientContext.ExecuteQuery();

            List<Model_Folder> _listFolder = new List<Model_Folder>();

            foreach (Folder SubFolder_1 in list.RootFolder.Folders)
            {
                if (SubFolder_1.Name.Equals(Doc_DDMARLT_Name_subFolder_CSV))
                {
                    Model_Folder Model_Folder = new Model_Folder();

                    Model_Folder.FolderName = SubFolder_1.Name;
                    string _url_SubFolder_2 = SubFolder_1.Name;

                    //取子文件夹
                    var folderUrl = Doc_DDMARLT_Name_subFolder_CSV + "/" + _url_SubFolder_2;
                    var folder = clientContext.Web.GetFolderByServerRelativeUrl(folderUrl);
                    clientContext.Load(folder);
                    clientContext.ExecuteQuery();
                    var folders = folder.Folders;
                    clientContext.Load(folders);
                    clientContext.ExecuteQuery();

                    foreach (var _folders in folders)
                    {
                        // do your thing
                    }


                    _listFolder.Add(Model_Folder);
                }
            }
}

如果多层的话可封装一个方法调用。

  

  

  

  

 

标签:Name,Point,C#,SubFolder,list,文件夹,Folder,Model,clientContext
来源: https://www.cnblogs.com/foreverfendou/p/12579913.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有