如何使用 C# 从文档库视图中检索工作簿



我需要获取、读取和更新文档库视图中存在的工作簿。 我正在尝试将 CSOM 用于我在 C# 中构建应用程序的相同 sa。 我能够生成客户端令牌,还可以使用(令牌助手(获取文档

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

但我有两个问题 1:如何从特定视图中获取文档,如上述方法所示给出所有文档。 2 : 当我尝试使用以下代码打开文档时,出现异常。

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

您可以使用 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');
}
}

}

最新更新