Compartilhar via


Como: Inserir dados em uma pasta de trabalho em um servidor

Você pode inserir dados no 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 inserir dados em 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 inserir os dados deve ser fora do assembly de projeto que está associado com o documento que você está trabalhando, por exemplo em um aplicativo de Console ou no Windows Forms.

Para obter instruções passo a passo usando o exemplo de código neste tópico, consulte Demonstra Passo a passo: Inserindo dados em 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 e, em seguida, preenche o Product tabela no dataset usando um adaptador de tabela. Em seguida, o código usa a ServerDocument a classe para acessar uma instância do mesmo dataset tipado que é armazenado em cache em uma pasta de trabalho do Excel e, em seguida, grava os dados do conjunto de dados local para o dataset em cache usando o SerializeDataInstance método.

Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
Dim productTableAdapter As _
    New AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter()

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

Try
    productTableAdapter.Fill(productDataSet.Product)
    Console.WriteLine("The local dataset is filled.")

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

    ' Initialize the worksheet dataset with the local dataset.
    If dataItem1 IsNot Nothing Then
        dataItem1.SerializeDataInstance(productDataSet)
        serverDocument1.Save()
        Console.WriteLine("The data is saved to the data cache.")
    Else
        Console.WriteLine("The data object is not found in the data cache.")
    End If
Catch ex As System.Data.SqlClient.SqlException
    Console.WriteLine(ex.Message)
Catch ex As System.IO.FileNotFoundException
    Console.WriteLine("The specified workbook does not exist.")
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();
AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter =
    new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter();

string workbookPath = System.Environment.GetFolderPath(
    Environment.SpecialFolder.MyDocuments) +
    @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
ServerDocument serverDocument1 = null;

try
{
    productTableAdapter.Fill(productDataSet.Product);
    Console.WriteLine("The local dataset is filled.");

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

    // Initialize the worksheet dataset with the local dataset.
    if (dataItem1 != null)
    {
        dataItem1.SerializeDataInstance(productDataSet);
        serverDocument1.Save();
        Console.WriteLine("The data is saved to the data cache.");
        Console.ReadLine();
    }
    else
    {
        Console.WriteLine("The data object is not found in the data cache.");
    }
}
catch (System.Data.SqlClient.SqlException ex)
{
    Console.WriteLine(ex.Message);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("The specified workbook does not exist.");
}
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: Inserindo dados em uma pasta de trabalho em um servidor.

Consulte também

Tarefas

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

Como: Inserir dados em documentos sem gravar em disco

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

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

Conceitos

Acesso a dados em documentos no servidor

DiffGrams (ADO.NET)