Como: Recuperar dados em cache a partir de uma pasta de trabalho em um servidor

Você pode recuperar dados do cache de uma pasta de trabalho do Excel de Microsoft Office que faz parte de um projeto de nível de documento do Office sem executar o Excel. Isso torna possível obter dados de pastas de trabalho do Excel são armazenadas em um servidor.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para Excel 2007 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

O código para recuperar os dados deve ficar fora do assembly de projeto do Office que está associado ao documento que você está trabalhando, por exemplo, em um ASP.NET página da Web, um aplicativo de console ou um aplicativo Windows Forms.

Para obter instruções passo a passo usando o exemplo de código neste tópico, consulte Demonstra Passo a passo: Recuperando dados em cache de uma pasta de trabalho em um servidor.

Exemplo

Primeiro, o exemplo de código a seguir cria uma instância de um dataset tipado chamado AdventureWorksLTDataSet. Em seguida, o código usa a CachedData propriedade da ServerDocument classe para acessar uma instância preenchida o dataset tipado mesmo que já está em cache em uma pasta de trabalho do Excel e, em seguida, lê os dados do conjunto de dados em cache em um dataset local.

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();
}

Compilando o código

O exemplo de código neste tópico foi projetado para ser usado com os seguintes aplicativos:

  • Um aplicativo de console que tenha acesso a um projeto de biblioteca de classe que define um dataset tipado. O código é executado no aplicativo de console.

  • Uma planilha do Excel que faz parte de uma personalização em nível de documento do Excel. A pasta de trabalho tiver um dataset em cache chamado AdventureWorksLTDataSet que contém alguns dados.

Para obter instruções passo a passo para usar o código, consulte Demonstra Passo a passo: Recuperando dados em cache de uma pasta de trabalho em um servidor.

Consulte também

Tarefas

Demonstra Passo a passo: Recuperando dados em cache de uma pasta de trabalho em um servidor

Como: Cache de dados para uso off-line ou em um servidor

Como: Alterar dados em uma pasta de trabalho em um servidor de cache

Conceitos

Acesso a dados em documentos no servidor

Dados armazenados em cache no nível do documento personalizações