Compartilhar via


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

Esta explicação passo a passo demonstra como inserir dados em um dataset que é armazenado em cache em uma pasta de trabalho do Excel de Microsoft Office sem iniciar o Excel usando o ServerDocument classe. Esta explicação passo a passo fornece instruções passo a passo para usar o exemplo de código é fornecido em Como: Inserir dados em uma pasta de trabalho 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.

This walkthrough illustrates the following tasks:

  • A definição de um dataset que contém os dados do banco de dados AdventureWorksLT.

  • A criação de instâncias do dataset em um projeto de pasta de trabalho do Excel e um projeto de aplicativo de console.

  • Criando um ListObject que está vinculado ao conjunto de dados na pasta de trabalho.

  • Adicionar o dataset na pasta de trabalho para o cache de dados.

  • Inserção de dados para o dataset em cache executando o código no aplicativo de console, sem iniciar o Excel.

Embora este passo a passo presume que você está executando o código no seu computador de desenvolvimento, o código demonstrado por este passo a passo pode ser usado em um servidor que não tenha o Excel instalado.

ObservaçãoObservação

Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Trabalhando com configurações.

Pré-requisitos

You need the following components to complete this walkthrough:

-

Uma edição do Visual Studio 2010 que inclua as ferramentas de desenvolvedor do Microsoft Office. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.100\).md).

Criando um projeto de biblioteca de classe que define um conjunto de dados.

Para usar o mesmo conjunto de dados em um projeto de pasta de trabalho do Excel e um aplicativo de console, você deve definir o dataset em um assembly separado que é referenciado por ambos esses projetos. Para esta explicação, definem o dataset em um projeto de biblioteca de classe.

Para criar o projeto de biblioteca de classe

  1. Start Visual Studio.

  2. On the File menu, point to New, and then click Project.

  3. No painel templates, expanda Visual C# ou Visual Basice em seguida, clique em Windows.

  4. Na lista de modelos de projeto, selecione Biblioteca de classe.

  5. No nome , digite AdventureWorksDataSet.

  6. Clique em Procurar, navegue até sua %USERPROFILE%\Meus documentos (para Windows XP e versões anteriores) ou a pasta de %UserProfile%\Documents (para Windows Vista) e, em seguida, clique em Selecionar a pasta.

  7. No Novo projeto caixa de diálogo caixa, certifique-se de que o Create directory for solution caixa de seleção não estiver selecionada.

  8. Click OK.

    Visual StudioAdiciona o AdventureWorksDataSet de projeto para Solution Explorer e abre o Class1. cs ou Class1. vb o arquivo de código.

  9. Em Solution Explorer, com o botão direito Class1. cs ou Class1. vbe em seguida, clique em Excluir. Este arquivo não é necessário para esta explicação passo a passo.

A definição de um Dataset no projeto de biblioteca de classe

Defina um dataset tipado que contém os dados do banco de dados AdventureWorksLT para o SQL Server 2005. Posteriormente neste passo a passo, você fará referência a este dataset a partir de um projeto de pasta de trabalho do Excel e um projeto de aplicativo de console.

O dataset é um digitado dataset que representa os dados na tabela do banco de dados AdventureWorksLT produto. Para obter mais informações sobre datasets tipados, consulte Trabalhando com conjuntos de dados Visual Studio.

Para definir um dataset tipado no projeto de biblioteca de classe

  1. Em Solution Explorer, clique na AdventureWorksDataSet project.

  2. On the Data menu, click Add New Data Source.

    The Data Source Configuration Wizard opens.

  3. Clique em banco de dadose em seguida, clique em próximo.

  4. Se você tiver uma conexão existente no banco de dados de AdventureWorksLT, escolher essa conexão e clique em próximo.

    Caso contrário, clique em Nova conexãoe usar o Add Connection caixa de diálogo Criar nova conexão. For more information, see Demonstra Passo a passo: Inserindo dados em uma pasta de trabalho em um servidor.

  5. No Save the Connection String to the Application Configuration File página, clique em Next.

  6. No Escolha seus objetos de banco de dados de página, expanda tabelas e selecione o produto (SalesLT).

  7. Click Finish.

    O arquivo de AdventureWorksLTDataSet.xsd é adicionado para o AdventureWorksDataSet project. Esse arquivo define os seguintes itens:

    • A typed dataset named AdventureWorksLTDataSet. Este dataset representa o conteúdo da tabela Produtos no banco de dados AdventureWorksLT.

    • A TableAdapter named ProductTableAdapter. Isso TableAdapter pode ser usado para ler e gravar dados na AdventureWorksLTDataSet. For more information, see Visão geral do TableAdapter.

    Você usará dois desses objetos posteriormente nesta explicação passo a passo.

  8. Em Solution Explorer, com o botão direito AdventureWorksDataSet e clique em Build.

    Verifique se o projeto é compilado sem erros.

Criando um projeto de pasta de trabalho do Excel

Crie um projeto de pasta de trabalho do Excel para a interface de dados. Posteriormente nesta explicação, você criará um ListObject que exibe os dados, e você irá adicionar uma instância do dataset para o cache de dados na pasta de trabalho.

Para criar o projeto de pasta de trabalho do Excel

  1. Em Solution Explorer, com o botão direito do AdventureWorksDataSet solução, aponte para Adde, em seguida, clique em Novo projeto.

  2. No painel templates, expanda Visual C# ou Visual Basice em seguida, expanda Office.

  3. Em expandida Office o nó, selecione o 2007 ou 2010 nó.

  4. Na lista de modelos de projeto, selecione o projeto de pasta de trabalho do Excel.

  5. No nome , digite AdventureWorksReport. Não modifique o local.

  6. Click OK.

    O Visual Studio Tools for Office Project Wizard abre.

  7. Certifique-se de que criar um novo documento está selecionado e, em seguida, clique em OK.

    Visual StudioAbre a AdventureWorksReport a pasta de trabalho no designer e adiciona a AdventureWorksReport de projeto para Solution Explorer.

Adicionar o Dataset para fontes de dados do projeto de pasta de trabalho do Excel

Antes de você poder exibir o conjunto de dados da pasta de trabalho do Excel, você deve primeiro adicionar o dataset a fontes de dados do projeto de pasta de trabalho do Excel.

Para adicionar o dataset para as fontes de dados do projeto de pasta de trabalho do Excel

  1. Em Solution Explorer, clique duas vezes em Sheet1.cs ou Sheet1.vb sob a AdventureWorksReport project.

    A pasta de trabalho abre no designer.

  2. On the Data menu, click Add New Data Source.

    The Data Source Configuration Wizard opens.

  3. Clique em objetoe em seguida, clique em próximo.

  4. No Selecionar o objeto que deseja vincular para a página, clique em Adicionar referência de.

  5. Sobre o projetos , clique em AdventureWorksDataSet e, em seguida, clique em OK.

  6. Sob o AdventureWorksDataSet namespace da AdventureWorksDataSet assembly, clique em AdventureWorksLTDataSet e, em seguida, clique em Concluir.

    O Fontes de dados janela é aberta, e AdventureWorksLTDataSet é adicionado à lista de fontes de dados.

Criando um ListObject que está vinculado a uma instância do Dataset

Para exibir o conjunto de dados na pasta de trabalho, crie um ListObject que é vinculado a uma instância do dataset. Para obter mais informações sobre controles de vinculação de dados, consulte A ligação de dados a controles em soluções do Office.

Para criar um ListObject que esteja vinculado a uma instância do dataset

  1. No Fontes de dados janela, expanda o AdventureWorksLTDataSet nó em AdventureWorksDataSet.

  2. Selecione o produto o nó, clique na seta suspensa que aparece e, em seguida, selecione ListObject na lista drop-down.

    Se a seta suspensa não aparecer, confirme que a pasta de trabalho é aberta no designer.

  3. Arraste o produto tabela para a célula A1.

    A ListObject controle chamado productListObject é criado na planilha, começando na célula A1. At a mesma hora, um objeto dataset chamado adventureWorksLTDataSet e um BindingSource chamado productBindingSource são adicionados ao projeto. O ListObject está vinculado a BindingSource, que por sua vez é vinculado a objeto dataset.

Adicionar o Dataset para o Cache de dados

Para habilitar código fora do projeto de pasta de trabalho do Excel para acessar o conjunto de dados na pasta de trabalho, você deve adicionar o dataset para o cache de dados. Para obter mais informações sobre o cache de dados, consulte Dados armazenados em cache no nível do documento personalizações e Cache de dados.

Para adicionar o dataset para o cache de dados

  1. No designer, clique em adventureWorksLTDataSet.

  2. No Propriedades janela, defina a modificadores propriedade para pública.

  3. Definir o CacheInDocument propriedade para True.

Checkpoint

Construir e executar o projeto de pasta de trabalho do Excel para garantir que compila e executa sem erros.

Para criar e executar o projeto.

  1. Em Solution Explorer, com o botão direito do AdventureWorksReport do projeto, escolha Debuge, em seguida, clique em Iniciar nova instância.

    O projeto é construído e a pasta de trabalho é aberta no Excel. O ListObject na Sheet1 estiver vazia, porque o adventureWorksLTDataSet o objeto no cache de dados não tem dados ainda. Na próxima seção, você usará um aplicativo de console para preencher o adventureWorksLTDataSet o objeto com dados.

  2. Feche o Excel. Não salve as alterações.

Criando um projeto de aplicativo de Console

Crie um projeto de aplicativo de console para usar para inserir dados no dataset em cache na pasta de trabalho.

Para criar o projeto de aplicativo de console

  1. Em Solution Explorer, com o botão direito do AdventureWorksDataSet solução, aponte para Adde, em seguida, clique em Novo projeto.

  2. No Tipos de projeto painel, expanda Visual C# ou Visual Basice em seguida, clique em Windows.

  3. No modelos de painel, selecione Aplicativo de Console.

  4. No nome , digite DataWriter. Não modifique o local.

  5. Click OK.

    Visual StudioAdiciona o DataWriter de projeto para Solution Explorer e abre o Program ou Module1 arquivo de código.

Adicionar dados ao Dataset em cache usando o aplicativo de Console

Use o ServerDocument classe no aplicativo de console para preencher o dataset em cache na pasta de trabalho com dados.

Para adicionar dados ao dataset em cache

  1. Em Solution Explorer, com o botão direito do DataWriter de projeto e clique em Adicionar referência de.

  2. Sobre o .NET , selecione Microsoft.VisualStudio.Tools.Applications.ServerDocument (se a DataWriter destinos do projeto de .NET Framework 4) ou Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0 (se a DataWriter destinos do projeto a.NET Framework 3.5).

  3. Click OK.

  4. Em Solution Explorer, com o botão direito do DataWriter de projeto e clique em Adicionar referência de.

  5. Sobre o projetos guia, selecione AdventureWorksDataSete clique em OK.

  6. Abra o arquivo Program. cs ou Module1. vb no Editor de código.

  7. Adicione o seguinte using (para C#) ou Imports (para Visual Basic) à parte superior do arquivo de código.

    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications;
    
  8. Add the following code to the Main method. Esse código declara os seguintes objetos:

    • Instâncias da AdventureWorksLTDataSet e ProductTableAdapter tipos são definidos na AdventureWorksDataSet project.

    • O caminho para a pasta de trabalho na pasta build do AdventureWorksReport a AdventureWorksReport project.

    • A ServerDocument objeto para acessar o cache de dados na pasta de trabalho.

      ObservaçãoObservação

      O código a seguir pressupõe que você está usando uma pasta de trabalho que possui a extensão de arquivo. xlsx. Se a pasta de trabalho em seu projeto possui uma extensão de arquivo diferente, modifique o caminho conforme necessário.

    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
    
    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;
    
  9. Adicione o seguinte código para o Main método, após o código adicionado na etapa anterior. Esse código realiza as seguintes tarefas:

    • Ele preenche o objeto dataset tipado usando o adaptador de tabela.

    • Ele usa o CachedData propriedade da ServerDocument a classe para acessar o conjunto de dados em cache na pasta de trabalho.

    • Ele usa o SerializeDataInstance método para preencher o dataset em cache com dados de local digitadas dataset.

    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
    
    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();
    }
    
  10. Em Solution Explorer, com o botão direito do DataWriter de projeto, aponte para Debuge, em seguida, clique em Iniciar nova instância.

    O projeto é criado e o aplicativo de console exibe várias mensagens de status quando o dataset local é preenchido e o aplicativo salva os dados para o dataset em cache na pasta de trabalho. Pressione ENTER para fechar o aplicativo.

A pasta de trabalho de teste.

Quando você abre a pasta de trabalho, o ListObject agora exibe os dados que foi adicionados ao dataset em cache usando o aplicativo de console.

Para testar a pasta de trabalho.

  1. Se ele ainda estiver aberto, feche a pasta de trabalho no criador de Visual Studio, AdventureWorksReport.

  2. No Windows Explorer, abra a pasta de trabalho do AdventureWorksReport está na pasta de compilação do AdventureWorksReport project. Por padrão, a pasta build é um dos seguintes locais:

    • %USERPROFILE%\Meus Documents\AdventureWorksReport\bin\Debug (para Windows XP e versões anteriores)

    • %USERPROFILE%\Documents\AdventureWorksReport\bin\Debug (para Windows Vista)

  3. Verifique o ListObject é preenchido com dados após abrir a pasta de trabalho.

Próximas etapas

Você pode aprender mais sobre como trabalhar com dados em cache com estes tópicos:

Consulte também

Tarefas

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

Demonstra Passo a passo: A alteração de dados em uma pasta de trabalho em um servidor de cache

Como: Inserir dados em documentos sem gravar em disco

Conceitos

Conectando a dados em aplicativos Windows Forms