Как получить книгу из представления библиотеки документов с помощью С#

Мне нужно получить, прочитать и обновить рабочие книги, присутствующие в представлении библиотека документов. Я пытаюсь использовать CSOM для того же, что и я, я создаю приложение на С#. Я могу генерировать клиентский токен, а также получать документы с помощью (TokenHelper)

FileCollection files = ctx.Web.GetFolderByServerRelativeUrl(folderName).Files

Но у меня есть две проблемы: 1. Как получить документы из определенного представления, поскольку описанный выше метод дает все документы. 2: Когда я пытаюсь открыть документ, используя приведенный ниже код, я получаю исключение.

FileInformation fileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, (string)f.ServerRelativeUrl);

person shantanu    schedule 16.10.2019    source источник


Ответы (1)


Вы можете использовать EPPLUS для чтения файла Excel.

Образец кода:

 File file = clientContext.Web.GetFileByServerRelativeUrl("/Shared%20Documents/testdata.xlsx");
                ClientResult<System.IO.Stream> data=file.OpenBinaryStream();
                clientContext.Load(file);
                clientContext.ExecuteQuery();
                using (var pck = new OfficeOpenXml.ExcelPackage())
                {
                    //using (var stream = File.OpenRead(""))
                    //{
                    //    pck.Load(stream);
                    //}
                    using (System.IO.MemoryStream mStream = new System.IO.MemoryStream())
                    {
                        if (data != null)
                        {
                            data.Value.CopyTo(mStream);
                            pck.Load(mStream);
                            var ws = pck.Workbook.Worksheets.First();
                            DataTable tbl = new DataTable();
                            bool hasHeader = true; // adjust it accordingly( i've mentioned that this is a simple approach)
                            foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
                            {
                                tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
                            }
                            var startRow = hasHeader ? 2 : 1;
                            for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
                            {
                                var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                                var row = tbl.NewRow();
                                foreach (var cell in wsRow)
                                {
                                    if (null != cell.Hyperlink)
                                        row[cell.Start.Column - 1] = cell.Hyperlink;
                                    else
                                        row[cell.Start.Column - 1] = cell.Text;
                                }
                                tbl.Rows.Add(row);
                            }
                            Console.WriteLine('1');

                        }
                    }



                }
person Lee_MSFT    schedule 17.10.2019