C# 如何使用Microsoft.Sharepoint.Client.dll读取由文件集合列修改的审阅状态、注释

C# 如何使用Microsoft.Sharepoint.Client.dll读取由文件集合列修改的审阅状态、注释,c#,asp.net,sharepoint,C#,Asp.net,Sharepoint,如何使用Microsoft.Sharepoint.Client.dll读取文件的所有列 实际上,我的文档驻留在子文件夹中,因此我使用ExecuteQuery(),一旦到达指定的文档文件夹,然后将所有文件加载到该文件夹的文件集合中,然后尝试读取网页的列以及excel文件名 在上图中,您可以找到黄色高亮列。我想从c#中读取这些列。 下面是我写的代码:- string siteUrl = @"http://localhost"; ClientContext c

如何使用Microsoft.Sharepoint.Client.dll读取文件的所有列

实际上,我的文档驻留在子文件夹中,因此我使用ExecuteQuery(),一旦到达指定的文档文件夹,然后将所有文件加载到该文件夹的文件集合中,然后尝试读取网页的列以及excel文件名

在上图中,您可以找到黄色高亮列。我想从c#中读取这些列。 下面是我写的代码:-

            string siteUrl = @"http://localhost";
        ClientContext clientContext = new ClientContext(siteUrl);
        clientContext.Credentials = new NetworkCredential("*****", "*****", "*****");
        Web site = clientContext.Web;
        FolderCollection SearchFolder = site.Folders;
        clientContext.Load(SearchFolder);
        clientContext.ExecuteQuery();
        //Iterating each folder inside the website
        foreach (Folder searchFolder in SearchFolder)
            {
            if (searchFolder.Name == "Random Scan Tracking")
                {
                //Displays and Logs Message
                _loggerDetails.LogMessage = "Search Folder : " + searchFolder.Name;
                _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);

                Console.WriteLine("Search Folder : " + searchFolder.Name);
                FolderCollection RegionFolder=searchFolder.Folders;
                clientContext.Load(RegionFolder);
                clientContext.ExecuteQuery();
                //Iterating each Region Folder inside the Random Scan Folder
                foreach (Folder regionFolder in RegionFolder)
                    {
                    Console.WriteLine("Region Folder : " + regionFolder.Name);
                    //Displays and Logs Message
                    _loggerDetails.LogMessage = "Region Folder : " + regionFolder.Name;
                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);

                    FolderCollection StateFOlder=regionFolder.Folders;
                    clientContext.Load(StateFOlder);
                    clientContext.ExecuteQuery();
                    //Iterating each State Folder inside the Region Folder
                    foreach (Folder stateFolder in StateFOlder)
                        {
                        Console.WriteLine("State Folder : " + stateFolder.Name);
                        //Displays and Logs Message
                        _loggerDetails.LogMessage = "State Folder : " + stateFolder.Name;
                        _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);

                        FolderCollection CountyFolder=stateFolder.Folders;
                        clientContext.Load(CountyFolder);
                        clientContext.ExecuteQuery();
                        //Iterating each County Folder inside the State Folder
                        foreach (Folder countyFolder in CountyFolder)
                            {
                            Console.WriteLine("County Folder : " + countyFolder.Name);
                            //Displays and Logs Message
                            _loggerDetails.LogMessage = "County Folder : " + countyFolder.Name;
                            _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);

                            FolderCollection MonthFolder=countyFolder.Folders;
                            clientContext.Load(MonthFolder);
                            clientContext.ExecuteQuery();
                            //Iterating each Month Folder inside the County Folder
                            foreach (Folder monthFolder in MonthFolder)
                                {
                                Console.WriteLine("Month Folder : " + monthFolder.Name);
                                //Displays and Logs Message
                                _loggerDetails.LogMessage = "Month Folder : " + monthFolder.Name;
                                _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);

                                FileCollection flc=monthFolder.Files;
                                clientContext.Load(flc);
                                clientContext.ExecuteQuery();
                                foreach (Microsoft.SharePoint.Client.File file in flc)
                                    {
                                    Console.WriteLine("File Name : " + file.Name);
                                    Console.WriteLine("File Check out By Name : " + file.CheckedOutByUser.ToString());
                                    Console.WriteLine("FileCheck in Comment : " + file.CheckInComment.ToString());
                                    Console.WriteLine("Modified ByComment : " + file.ModifiedBy.ToString());
                                    Console.WriteLine("Modified Date : " + file.TimeLastModified.ToString());
                                    Console.WriteLine("Created Date : " + file.TimeCreated.ToString());
                                    //Displays and Logs Message
                                    _loggerDetails.LogMessage = "File Name : " + file.Name;
                                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);
                                    //Displays and Logs Message
                                    _loggerDetails.LogMessage = "File Check out By Name : " + file.CheckedOutByUser.ToString();
                                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);
                                    //Displays and Logs Message
                                    _loggerDetails.LogMessage = "FileCheck in Comment : " + file.CheckInComment.ToString();
                                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);
                                    //Displays and Logs Message
                                    _loggerDetails.LogMessage = "Modified ByComment : " + file.ModifiedBy.ToString();
                                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);
                                    //Displays and Logs Message
                                    _loggerDetails.LogMessage = "Modified Date : " + file.TimeLastModified.ToString();
                                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);
                                    //Displays and Logs Message
                                    _loggerDetails.LogMessage = "Created Date : " + file.TimeCreated.ToString();
                                    _writeLog.LogDetails(_loggerDetails.LogLevel_Info, _loggerDetails.LogMessage);
                                    }
                                }
                            }
                        }
                    }
                }
            }

我可以读取每个文件的文件名、修改人,但我还想读取修改日期、查看状态、注释和签出到列。

在您上次的foreach声明中:

添加以下代码:

ListItem item = file.ListItemAllFields;
clientContext.Load(item);
clientContext.ExecuteQuery();
string strModified = item["Modified"].ToString();
strint comments = item["Comments"].ToString();
获取其他类似的字段


希望这对您有用。

已经尝试过,但无法阅读“修改人”、“修改人”、“审阅状态”、“评论”列。在问题中也更新了我的代码。我能够获得excel的详细信息,但无法获得网站上显示的其他详细信息,如图中突出显示的。实际上,这些文档驻留在子文件夹中,因此我使用ExecuteQuery()一旦我到达指定的文档文件夹,然后将该文件夹的所有文件集合加载到上下文中,然后尝试读取网页的列以及excel文件名。感谢Anchal的回答,但仍然无法读取项目[“修改人”]、项目[“审阅状态”]和项目[“签出到”]列。将异常获取为“项[”签出到“]”引发了类型为“Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException”的异常,请在引用列时使用该列的内部名称