共用方式為


HOW TO:從伺服器的活頁簿中擷取快取資料

您不需要執行 Excel,即可從屬於文件層級 Office 專案一部分的 Microsoft Office Excel 活頁簿快取中擷取資料。 這可讓您從儲存在伺服器上的 Excel 活頁簿取得資料。

**適用於:**本主題中的資訊適用於 Excel 2007 和 Excel 2010 的文件層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

擷取資料所用的程式碼必須位於與所處理之文件關聯的 Office 專案組件外部,例如位於 ASP.NET 網頁、主控台應用程式或 Windows Form 應用程式中。

如需使用本主題中程式碼範例的逐步指示,請參閱逐步解說:擷取伺服器上的活頁簿快取資料

範例

下列程式碼範例會先建立名為 AdventureWorksLTDataSet 的具型別資料集之執行個體 (Instance)。 接著,這個程式碼會使用 ServerDocument 類別 (Class) 的 CachedData 屬性,存取 Excel 活頁簿中已快取之相同具型別資料集的已填滿執行個體,然後將資料從快取資料集讀入本機資料集。

Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
Dim workbookPath As String = System.Environment.GetFolderPath( _
    Environment.SpecialFolder.MyDocuments) & _
    "\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"
Dim serverDocument1 As ServerDocument = Nothing

Try
    serverDocument1 = New ServerDocument(workbookPath)
    Dim dataHostItem1 As CachedDataHostItem = _
        serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1")
    Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet")

    If dataItem1 IsNot Nothing Then
        Console.WriteLine("Before reading data from the cache dataset, the local dataset has " & _
            "{0} rows.", productDataSet.Product.Rows.Count.ToString())

        ' Read the cached data from the worksheet dataset into the local dataset.
        Dim schemaReader As New System.IO.StringReader(dataItem1.Schema)
        Dim xmlReader As New System.IO.StringReader(dataItem1.Xml)
        productDataSet.ReadXmlSchema(schemaReader)
        productDataSet.ReadXml(xmlReader)

        Console.WriteLine("After reading data from the cache dataset, the local dataset has " & _
            "{0} rows.", productDataSet.Product.Rows.Count.ToString())
    Else
        Console.WriteLine("The data object is not found in the data cache.")
    End If
Catch ex As System.IO.FileNotFoundException
    Console.WriteLine("The specified workbook does not exist.")
Catch ex As System.Xml.XmlException
    Console.WriteLine("The data object has invalid XML information.")
Finally
    If Not (serverDocument1 Is Nothing) Then
        serverDocument1.Close()
    End If
    Console.WriteLine(vbLf & vbLf & "Press Enter to close the application.")
    Console.ReadLine()
End Try
AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet =
    new AdventureWorksDataSet.AdventureWorksLTDataSet();
string workbookPath = System.Environment.GetFolderPath(
    Environment.SpecialFolder.MyDocuments) +
    @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
ServerDocument serverDocument1 = null;

try
{
    serverDocument1 = new ServerDocument(workbookPath);
    CachedDataHostItem dataHostItem1 =
        serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"];
    CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"];

    if (dataItem1 != null)
    {
        Console.WriteLine("Before reading data from the cache dataset, the local dataset has " +
            "{0} rows.", productDataSet.Product.Rows.Count.ToString());

        // Read the cached data from the worksheet dataset into the local dataset.
        System.IO.StringReader schemaReader = new System.IO.StringReader(dataItem1.Schema);
        System.IO.StringReader xmlReader = new System.IO.StringReader(dataItem1.Xml);
        productDataSet.ReadXmlSchema(schemaReader);
        productDataSet.ReadXml(xmlReader);

        Console.WriteLine("After reading data from the cache dataset, the local dataset has " +
            "{0} rows.", productDataSet.Product.Rows.Count.ToString());
    }
    else
    {
        Console.WriteLine("The data object is not found in the data cache.");
    }
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("The specified workbook does not exist.");
}
catch (System.Xml.XmlException)
{
    Console.WriteLine("The data object has invalid XML information.");
}
finally
{
    if (serverDocument1 != null)
    {
        serverDocument1.Close();
    }

    Console.WriteLine("\n\nPress Enter to close the application.");
    Console.ReadLine();
}

編譯程式碼

本主題中的程式碼範例是設計與下列應用程式搭配使用:

  • 主控台應用程式。它能存取類別庫 (Class Library) 專案 (會定義具型別資料集)。 該程式碼會在主控台應用程式中執行。

  • 屬於 Excel 文件層級自訂的 Excel 活頁簿。 此活頁簿具有名為 AdventureWorksLTDataSet 而且包含一些資料的快取資料集。

如需使用該程式碼的逐步指示,請參閱逐步解說:擷取伺服器上的活頁簿快取資料

請參閱

工作

逐步解說:擷取伺服器上的活頁簿快取資料

HOW TO:快取資料供離線使用或於伺服器上使用

HOW TO:變更伺服器活頁簿中的快取資料

概念

存取伺服器文件中的資料

文件層級自訂中的快取資料