zoukankan      html  css  js  c++  java
  • 使用C# CSOM 读取 O365 Share Point Online 中的文档库,一级文件夹,二级文件夹...

      最近有个项目,背景是读取 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);
                    }
                }
    }

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

      

      

      

      

  • 相关阅读:
    征战蓝桥 —— 2016年第七届 —— C/C++A组第5题——消除尾一
    UVA 10410 Tree Reconstruction (树重建)
    UVA 12166 Equilibrium Mobile (修改天平)(dfs字符串表示的二叉树)
    UVA 1600 Patrol Robot (巡逻机器人)(bfs)
    UVA 712 STrees(S树)
    UVA 536 Tree Recovery (二叉树重建)
    Stall Reservations【贪心】【堆】
    Sunscreen【贪心】
    Sunscreen【贪心】
    Sunscreen【贪心】
  • 原文地址:https://www.cnblogs.com/foreverfendou/p/12579913.html
Copyright © 2011-2022 走看看