1

我有一个存储在 SharePoint 文档库中的 excel 文件。我需要读取这个 excel 文件并以编程方式从文件路径中获取数据

例如:SharePoint 站点:http:// servername :1000

Excel文件路径:http://servername:1000/ExcelDocs//ExcelFile.xlsx

正如我们所见,我有存储在 SharePoint 文档库中的 excel 文件的路径。我需要从此文件中获取数据。有任何想法吗?

谢谢

4

2 回答 2

5

事实上,您可以在不涉及任何第三方组件的情况下仅使用 SharePoint 功能来读取 Excel 文件内容。

该解决方案演示了如何使用 SharePoint REST 服务来读取 Excel 数据。关于此方法的另一点是,由于根本不存在SharePoint 库的任何依赖项,因此既不引用服务器端程序集,也未引用客户端程序集。

先决条件:必须配置Excel Services 服务应用程序

准备excel数据

假设以下excel文件

在此处输入图像描述

工作簿中包含以下项目:

在将文件上传到 SharePoint 库之前,请转到File -> Browse View Options -> choose Items in the Workbook如下所示。然后保存文件并将其上传到 SharePointDocuments库。

在此处输入图像描述

如何通过 Excel Services 2010 REST API 读取 excel 数据

以下示例演示如何使用Excel Services 2010 REST API读取excel 表格内容

using System;
using System.Net;

namespace SharePoint.Client.Office
{
    public class ExcelClient : IDisposable
    {

        public ExcelClient(Uri webUri, ICredentials credentials)
        {
            WebUri = webUri;
            _client = new WebClient {Credentials = credentials};
        }


        public string ReadTable(string libraryName,string fileName, string tableName,string formatType)
        {
            var endpointUrl = string.Format("{0}/_vti_bin/ExcelRest.aspx/{1}/{2}/Model/Tables('{3}')?$format={4}", WebUri,libraryName,fileName, tableName, formatType);
            return _client.DownloadString(endpointUrl);
        }


        public void Dispose()
        {
            _client.Dispose();
            GC.SuppressFinalize(this);
        }

        public Uri WebUri { get; private set; }

        private readonly WebClient _client;

    }
}

用法

该示例演示了如何使用 JSON 格式读取表格内容:

var credentials = new NetworkCredential(userName,password,domain);  
var client = new ExcelClient(webUri, credentials);
var tableData = client.ReadTable("Documents","ciscoexpo.xlsx", "CiscoSalesTable","html");

参考

于 2015-03-29T18:43:29.533 回答
2

您可以从 SPFile 对象获取二进制数据,然后在第三方库ClosedXML中打开它

SPFile file = web.GetFile("http://servername:1000/ExcelDocs//ExcelFile.xlsx");
Stream dataStream = file.OpenBinaryStream();
XLWorkbook workbook = new XLWorkbook(dataStream);

或者您可以使用OpenXML,它是 Microsoft SDK。

SPFile file = web.GetFile("http://servername:1000/ExcelDocs//ExcelFile.xlsx");
Stream dataStream = file.OpenBinaryStream();
SpreadsheetDocument document = SpreadsheetDocument.Open(dataStream, false);
Workbook workbook = document.WorkbookPart.Workbook;

这是使用 OpenXML的示例

于 2013-01-24T08:27:17.963 回答