1

SharePoint ドキュメント ライブラリに保存されている Excel ファイルがあります。このExcelファイルを読み取り、ファイルパスからプログラムでデータを取得する必要があります

例: SharePoint サイト: http:// サーバー名 :1000

Excel ファイルのパス:http://サーバー名:1000/ExcelDocs//ExcelFile.xlsx

ご覧のとおり、SharePoint ドキュメント ライブラリに保存されている Excel ファイルへのパスがあります。このファイルからデータを取得する必要があります。何か案は?

ありがとう

4

2 に答える 2

5

実際、SharePoint の機能のみを使用して、サード パーティのコンポーネントを使用せずに Excel ファイルのコンテンツを読み取ることができました。

このソリューションは、SharePoint REST サービスを使用して Excel データを読み取る方法を示しています。このアプローチに関するもう 1 つのポイントは、SharePoint ライブラリへの依存関係がまったくないため、サーバー側アセンブリもクライアント側アセンブリも参照されないことです。

前提条件: Excel Services サービス アプリケーションを構成する必要があります

エクセルデータを用意

以下のエクセルファイルを想定

ここに画像の説明を入力

ブックに次の項目が含まれています。

ファイルを 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);

または、Microsoft SDK であるOpenXMLを使用できます。

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 に答える