Demonstra Passo a passo: Recuperando dados em cache de uma pasta de trabalho em um servidor
Esta explicação passo a passo demonstra como recuperar dados de 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: Recuperar dados em cache a partir de 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 é acoplada ao dataset na pasta de trabalho e o preenchimento de ListObject com dados quando a pasta de trabalho é aberta.
Adicionar o dataset na pasta de trabalho para o cache de dados.
Lendo dados do conjunto de dados em cache para o dataset 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çã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).
Excel 2007 ou Excel 2010.
Acesso a uma instância em execução de Microsoft SQL Server ou Microsoft SQL Server Express que tem o banco de dados de exemplo AdventureWorksLT anexado a ele. Você pode baixar o banco de dados de AdventureWorksLT a site CodePlex da. Para obter mais informações sobre a anexação de um banco de dados, consulte os seguintes tópicos:
Para anexar um banco de dados usando o SQL Server Management Studio ou o SQL Server Management Studio Express, consulte como: Anexar um banco de dados (SQL Server Management Studio).
Para anexar um banco de dados usando a linha de comando, consulte como: Anexar um arquivo de banco de dados de SQL Server Express.
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
Start Visual Studio.
On the File menu, point to New, and then click Project.
No painel templates, expanda Visual C# ou Visual Basice em seguida, clique em Windows.
Na lista de modelos de projeto, selecione Biblioteca de classe.
No nome , digite AdventureWorksDataSet.
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.
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.
Click OK.
Visual StudioAdiciona o AdventureWorksDataSet de projeto para Solution Explorer e abre o Class1. cs ou Class1. vb o arquivo de código.
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
Em Solution Explorer, clique na AdventureWorksDataSet project.
On the Data menu, click Add New Data Source.
The Data Source Configuration Wizard opens.
Clique em banco de dadose em seguida, clique em próximo.
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 Como: Conectar-se a Dados em um Banco de Dados.
No Save the Connection String to the Application Configuration File página, clique em Next.
No Escolha seus objetos de banco de dados de página, expanda tabelas e selecione o produto (SalesLT).
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.
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
Em Solution Explorer, com o botão direito do AdventureWorksDataSet solução, aponte para Adde, em seguida, clique em Novo projeto.
No painel templates, expanda Visual C# ou Visual Basice em seguida, expanda Office.
Em expandida Office o nó, selecione o 2007 ou 2010 nó.
Na lista de modelos de projeto, selecione o projeto de pasta de trabalho do Excel.
No nome , digite AdventureWorksReport. Não modifique o local.
Click OK.
O Visual Studio Tools for Office Project Wizard abre.
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
Em Solution Explorer, clique duas vezes em Sheet1.cs ou Sheet1.vb sob a AdventureWorksReport project.
A pasta de trabalho abre no designer.
On the Data menu, click Add New Data Source.
The Data Source Configuration Wizard opens.
Clique em objetoe em seguida, clique em próximo.
No Selecionar o objeto que deseja vincular para a página, clique em Adicionar referência de.
Sobre o projetos , clique em AdventureWorksDataSet e, em seguida, clique em OK.
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
No Fontes de dados janela, expanda o AdventureWorksLTDataSet nó em AdventureWorksDataSet.
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.
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
No designer, clique em adventureWorksLTDataSet.
No Propriedades janela, defina a modificadores propriedade para pública.
Definir o CacheInDocument propriedade para True.
Inicializando o Dataset na pasta de trabalho
Antes de recuperar os dados do conjunto de dados em cache, usando o aplicativo de console, você primeiro deve preencher o dataset com dados em cache.
Ao inicializar o conjunto de dados na pasta de trabalho
Em Solution Explorer, com o botão direito do Sheet1.cs ou Sheet1.vb de arquivo e clique em Exibir código.
Substituir o Sheet1_Startup o manipulador de eventos com o código a seguir. Esse código usa uma instância da ProductTableAdapter classe definida na AdventureWorksDataSet o projeto para preencher o dataset em cache com dados, se ele estiver vazio no momento.
Private ProductTableAdapter As New _ AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter() Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup If Me.NeedsFill("AdventureWorksLTDataSet") Then Me.ProductTableAdapter.Fill(Me.AdventureWorksLTDataSet.Product) End If End Sub
private AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter = new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter(); private void Sheet1_Startup(object sender, System.EventArgs e) { if (this.NeedsFill("adventureWorksLTDataSet")) { this.productTableAdapter.Fill(this.adventureWorksLTDataSet.Product); } }
Checkpoint
Construir e executar o projeto de pasta de trabalho do Excel para garantir que compila e executa sem erros. Esta operação também preenche o dataset em cache e salva os dados na pasta de trabalho.
Para criar e executar o projeto.
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. Verifique o seguinte:
O ListObject preenche com dados.
O valor de ListPrice coluna para a primeira linha do ListObject é 1431.5. Posteriormente nesta explicação passo a passo, você usará um aplicativo de console para modificar os valores de ListPrice coluna.
Salve a pasta de trabalho. Não modifique o nome de arquivo ou o local da pasta de trabalho.
Feche o Excel.
Criando um projeto de aplicativo de Console
Crie um projeto de aplicativo de console para usar para modificar os dados no dataset em cache na pasta de trabalho.
Para criar o projeto de aplicativo de console
Em Solution Explorer, com o botão direito do AdventureWorksDataSet solução, aponte para Adde, em seguida, clique em Novo projeto.
No Tipos de projeto painel, expanda Visual C# ou Visual Basice em seguida, clique em Windows.
No modelos de painel, selecione Aplicativo de Console.
No nome , digite DataReader. Não modifique o local.
Click OK.
Visual StudioAdiciona o DataReader de projeto para Solution Explorer e abre o Program ou Module1 arquivo de código.
Recuperando dados do conjunto de dados em cache, usando o aplicativo de Console
Use o ServerDocument classe no aplicativo de console para ler os dados em um local AdventureWorksLTDataSet objeto. Para confirmar que o dataset local foi inicializado com dados do conjunto de dados em cache, o aplicativo exibe o número de linhas no dataset local.
Para recuperar dados de um dataset em cache
Em Solution Explorer, com o botão direito do DataReader de projeto e clique em Adicionar referência de.
Sobre o .NET , selecione Microsoft.VisualStudio.Tools.Applications.ServerDocument (se o DataReader destinos do projeto de .NET Framework 4) ou Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0 (se a DataReader destinos do projeto a.NET Framework 3.5).
Click OK.
Em Solution Explorer, com o botão direito do DataReader de projeto e clique em Adicionar referência de.
Sobre o projetos guia, selecione AdventureWorksDataSete clique em OK.
Abra o arquivo Program. cs ou Module1. vb no Editor de código.
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;
Add the following code to the Main method. Esse código declara os seguintes objetos:
Uma instância da AdventureWorksLTDataSet tipo é definido 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ção O código a seguir pressupõe que a pasta de trabalho é salvo usando a extensão. xlsx. Se a pasta de trabalho em seu projeto possui uma extensão diferente, modifique o caminho conforme necessário.
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
AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet = new AdventureWorksDataSet.AdventureWorksLTDataSet(); string workbookPath = System.Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments) + @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"; ServerDocument serverDocument1 = null;
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 usa o CachedData propriedade da ServerDocument a classe para acessar o conjunto de dados em cache na pasta de trabalho.
Ele lê os dados do conjunto de dados em cache para o dataset local.
Ele exibe o número de linhas no dataset local, para confirmar que ela tem dados.
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
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(); }
No Build menu, clique em Build datareader.
Testing the Project
Quando você executa o aplicativo de console, ele exibe o número de linhas no dataset local.
Para testar a pasta de trabalho.
Em Solution Explorer, com o botão direito do DataReader de projeto, aponte para Debuge, em seguida, clique em Iniciar nova instância.
Verifique se que o aplicativo relata que o dataset local tem 295 linhas.
Pressione ENTER para fechar o aplicativo.
Próximas etapas
Você pode aprender mais sobre como trabalhar com dados em cache com estes tópicos:
Inicializando os dados em um dataset em cache sem iniciar o Excel. For more information, see Demonstra Passo a passo: Inserindo dados em uma pasta de trabalho em um servidor.
Alterar os dados em um dataset em cache sem iniciar o Excel. For more information, see Demonstra Passo a passo: A alteração de dados em uma pasta de trabalho em um servidor de cache.
Consulte também
Tarefas
Como: Recuperar dados em cache a partir de uma pasta de trabalho em um servidor
Como: Inserir dados em uma pasta de trabalho em um servidor
Demonstra Passo a passo: Inserindo 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