Demonstra Passo a passo: Recuperando dados em cache de uma pasta de trabalho em um servidor
Se aplica a |
---|
As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office. Tipo de Projeto
Versão do Microsoft Office
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Esta explicação passo a passo demonstra como recuperar dados de um dataset que é armazenado em cache em uma pasta de trabalho do Microsoft Office Excel sem iniciar o Excel usando a classe ServerDocument.Esta explicação passo a passo fornece instruções passo a passo para usando o exemplo de código é fornecido no Como: Recuperar dados de uma pasta de trabalho em um servidor armazenados em cache.
Essa explicação passo a passo ilustra as seguintes tarefas:
Definição de um dataset que contém dados do banco de dados AdventureWorksLT para Microsoft SQL Servidor 2005.
Criando instâncias do dataset em um projeto de pasta de trabalho do Excel e um projeto de Aplicativo do Console.
Criando um ListObject que será Ligado ao dataset na pasta de trabalho e preencher o ListObject com dados quando a pasta de trabalho é aberta.
Adicionar o dataset na pasta de trabalho ao cache de dados.
Lendo dados de o dataset em cache para o dataset no Aplicativo do Console, sem iniciar o Excel.
Embora esta explicação passo a passo assume que você está executando o código no seu computador de desenvolvimento, o código demonstrado nesta explicação passo a passo pode ser usado em um servidor que não tenha o Excel instalado.
Observação: |
---|
Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir.A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos.Para obter mais informações, consulte Configurações do Visual Studio. |
Pré-requisitos
Para completar este passo a passo, são necessários os seguintes componentes:
Ferramentas do Visual Studio para o Office (um componente opcional do O Visual Studio 2008 Professional e Visual Studio Team System).
Ferramentas do Visual Studio para o Office é instalado por padrão com as versões listadas do Visual Studio.Para Marcar se ele está instalado, Marcar Instalando o Visual Studio Tools para Office.
O Excel 2007 ou no Excel 2003.
Acessar a uma instância Executando do SQL Servidor 2005 ou SQL Servidor 2005 Express que tenha o AdventureWorksLT exemplo de banco de dados anexado a ele.Você pode baixar o banco de dados AdventureWorksLT de CodePlex Web site.Para obter mais informações sobre anexando um banco de dados, consulte os tópicos a seguir:
Para anexar um banco de dados usando SQL Servidor Management Studio ou SQL Servidor Management Studio Express, consulte como para: Anexe um banco de dados (SQL Servidor Management Studio).
Para anexar um banco de dados usando a linha de comando, consulte como para: Anexe um arquivo de banco de dados a SQL Servidor Express.
Criando um projeto de biblioteca de classes que define um DataSet
Para usar o mesmo dataset em um projeto de pasta de trabalho do Excel e um Aplicativo do Console, você deve definir o conjunto de dados em um assembly separado que é citado pelo ambos esses projetos.Para esta explicação passo a passo, Definir o dataset em um projeto de Biblioteca de Classess.
Para criar o projeto de Biblioteca de Classes
Inicie o Visual Studio
No menu File, aponte para New, e em seguida, clique em Project.
No painel de A Projeto Types, Expandirir Visual C# ou Visual Basice clique em Windows.
No painel modelos, Selecionar De biblioteca de classes.
Na caixa Nome, tipo AdventureWorksDataSet.
Clique em Procurar, navegue para seu %UserProfile%\My documentos (para o Windows XP e anteriormente) ou a pasta %UserProfile%\Documents (para Windows Vista) e, em seguida, clique em Selecionar a pasta.
Na Novo Projeto caixa de diálogo, verifique que a Criar Diretório for solução Caixa de Marcar não estiver Selecionadoda.
Clique em OK.
Visual Studio adiciona o projeto de AdventureWorksDataSet para Gerenciador de Soluções e abre a Class1.cs ou o arquivo de código do Class1.vb.
Em Gerenciador de Soluções, clique com o botão direito do mouse de Class1.cs ou Class1.vbe clique em Excluir.Você não precisa esse arquivo para esta explicação passo a passo.
Definir um dataset no projeto de Biblioteca de Classes
Definir um dataset tipado que contém dados do banco de dados AdventureWorksLT para SQL Servidor 2005.Posteriormente neste passo-a-passo, você fará referência isso DataSet de um projeto de pasta de trabalho do Excel e um projeto de Aplicativo do Console.
O dataset é um digitado dataset que representa os dados na tabela produtos de banco de dados AdventureWorksLT.Para obter mais informações sobre datasets tipados, consulte Datasets in Visual Studio Overview.
Para definir um dataset tipado no projeto de biblioteca de classes
Em Gerenciador de Soluções, clique no projeto de AdventureWorksDataSet.
No menu Data, clique em Add New Data Source.
O Data Source Configuration Wizard é aberto.
Clique em do banco de dados e clique em Avançar de .
Se você tiver uma conexão existente para o banco de dados AdventureWorksLT, escolha essa conexão e clique em Avançar de .
Caso contrário, clique em Novo conexãoe use o Adicionar Conexão caixa de diálogo para criar a Novo conexão.For more information, see Como: Criar conexões para SQL Servidor bancos de dados.
Na página Save the Connection String to the Application Configuration File , clique em Next.
Na página Choose Your Banco de Dados Objects, Expandirir Tabelas e Selecionar de produto (SalesLT) .
Clique em Finish.
AdventureWorksLTDataSet. Arquivo XSD é adicionado ao projeto AdventureWorksDataSet.Este arquivo define os seguintes itens:
Um conjunto de dados tipado chamado AdventureWorksLTDataSet.Isso DataSet representa o conteúdo da tabela Produtos no banco de dados AdventureWorksLT.
Um TableAdapter denominado ProductTableAdapter.Este TableAdapter pode ser usado para ler e gravar dados na AdventureWorksLTDataSet.For more information, see Visão geral do TableAdapter.
Você irá usar ambos esses objetos posteriormente neste passo-a-passo.
Em Gerenciador de Soluções, clique com o botão direito do mouse AdventureWorksDataSet e clique em Compilação.
Verifique se que o projeto compila sem erros.
Criando um projeto de pasta de trabalho do Excel
Criar um projeto de pasta de trabalho do Excel para a interface para os dados.Posteriormente nesta explicação passo a passo, 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 dGerenciador de Soluções, clique com o botão direito do mouse AdventureWorksDataSet solução, aponte para Adicionare clique em Novo projeto.
No painel de A Projeto Types, Expandirir Visual C# ou do Visual Basic e em seguida, Expandirir Office.
Selecionar a pasta de 2007 se você estiver usando o Excel 2007 no computador de desenvolvimento, ou Selecionar a pasta de 2003 se você estiver usando o Excel 2003.
No painel modelos, Selecionar Da pasta de trabalho do Excel.
Na caixa Nome, tipo AdventureWorksReport.Não modifique o local.
Clique em OK.
Abre o Visual Studio Tools para Office Projeto Assistente.
Certifique-se de que criar um documento novo Está Selecionadoda e clique em OK .
Visual Studio abre a pasta de trabalho AdventureWorksReport no designer e o adiciona o projeto de AdventureWorksReport para Gerenciador de Soluções.
Adicionar o DataSet a fontes de dados em projeto de pasta de trabalho do Excel
Antes de você poder exibir o conjunto de dados na pasta de trabalho do Excel, primeiro você deve 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 Gerenciador de Soluções, clique Duplo Sheet1.cs ou Sheet1.vb no projeto AdventureWorksReport.
A pasta de trabalho abre no designer.
No menu Data, clique em Add New Data Source.
O Data Source Configuration Wizard é aberto.
Clique em Objetoe clique em Avançar de .
No Selecionar o objeto que deseja Ligar à página, clique em Adicionar Referência.
Na guia Projects, clique em AdventureWorksDataSet e clique em OK de .
No namespace AdventureWorksDataSet de AdventureWorksDataSet assembly, clique em AdventureWorksLTDataSet e clique em Concluir.
A janela de fontes de dados é aberta, e AdventureWorksLTDataSet é adicionado à lista de fontes de dados.
Criando um ListObject que É Ligado a uma instância do DataSet
Para exibir o conjunto de dados na pasta de trabalho, Criar um ListObject que será Ligado a uma instância do dataset.Para obter mais informações sobre controles de ligação a dados, consulte Vinculando dados a controles.
Para criar um ListObject que será Ligado a uma instância do dataset
Na janela Data Sources, Expandirir o nó de AdventureWorksLTDataSet em AdventureWorksDataSet.
Selecionar o Produto nó, clique na seta suspensa que aparece e Selecionar ListObject Soltar suspensa.
Se o Soltar - para baixo Seta não aparece, confirme que a pasta de trabalho estiver aberta no designer.
Arraste a tabela de De produtos de para a célula A1.
Um Controlarar de ListObject chamado productListObject é criado na planilha, começando na célula A1.Ao mesmo tempo, um objeto de dataset chamado adventureWorksLTDataSet e um BindingSource chamado productBindingSource são adicionados ao projeto.O ListObject está Ligado a BindingSource, que por sua vez é Ligados ao objeto dataset.
Adicionar o DataSet ao cache de dados
Para habilitar código fora do projeto pasta de trabalho do Excel para acessar o dataset 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 Modelo de dados no nível de documento personalizações e Cache de dados.
Para adicionar o dataset para o cache de dados
No designer, clique em AdventureWorksLTDataSet.
Na janela Propriedades , defina Modificadores de propriedade de a Público.
Defina o CacheInDocument propriedade como Verdadeiro.
Inicializando o dataset na pasta de trabalho
Antes de você pode recuperar os dados do dataset em cache usando o Aplicativo do Console, primeiro você deve preencher o dataset em cache com dados.
Ao inicializar o dataset na pasta de trabalho
Em Gerenciador de Soluções, clique com o botão direito do mouse o Sheet1.cs ou o Sheet1.vb arquivo e clique em Exibir Code.
Substituir o manipulador de eventos de Sheet1_Startup com o código a seguir.Esse código usa uma instância da classe ProductTableAdapter que é definido no projeto AdventureWorksDataSet 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); } }
Ponto de Verificação
ComCompilação 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.
ParComCompilação e executar o projeto
Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto de AdventureWorksReport, escolha Debuge, em seguida, clique em Iniciar Novo instância.
O projeto é criado e a pasta de trabalho abre no Excel.Verifique o seguinte:
O ListObject preenche com dados.
O valor na coluna ListPrice para a Primeiro linha do ListObject é 1431.5.Posteriormente nesta explicação passo a passo, você usará um Aplicativo do Console para modificar os valores na coluna ListPrice.
Salvar a pasta de trabalho.Não modifique o Nome do Arquivo ou do local da pasta de trabalho.
Excel Fechar.
Criando um projeto de Aplicativo do Console
Criar um projeto de Aplicativo do Console para usar para modificar dados no dataset em cache na pasta de trabalho.
Para criar o projeto de Aplicativo do Console
Em dGerenciador de Soluções, clique com o botão direito do mouse AdventureWorksDataSet solução, aponte para Adicionare clique em Novo projeto.
No painel de A Projeto Types, Expandirir Visual C# ou Visual Basice clique em Windows.
No painel modelos, Selecionar do Aplicativo do Console.
Na caixa Nome, tipo DataReader.Não modifique o local.
Clique em OK.
Visual Studio adiciona o projeto de DataReader para Gerenciador de Soluções e abre a Programa.cs ou o arquivo de código do Module1.vb.
Recuperando dados de o dataset em cache usando o Aplicativo do Console
Use a classe de ServerDocument no Aplicativo do Console para ler os dados em um objeto local AdventureWorksLTDataSet.Para confirmar que o dataset local foi inicializado com dados do dataset em cache, o aplicativo exibe o número de linhas no dataset local.
Para recuperar dados de dataset em cache
Em Gerenciador de Soluções, clique com o botão direito do mouse o projeto de DataReader e clique em Adicionar Referência.
Na guia .NET, Selecionar um dos seguintes assemblies:
Se você estiver usando o Excel 2007 no computador de desenvolvimento, Selecionar Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.
Se você estiver usando o Excel 2003, Selecionar Microsoft.VisualStudio.Tools.Applications.Tempo de execução.
Esses assemblies Definirm diferentes versões da classe ServerDocument que são usados por projetos para o 2007 Microsoft Office Sistema e o Microsoft Office 2003.For more information, see Gerenciando documentos em um servidor usando a classe do ServerDocument.
Clique em OK.
Em Gerenciador de Soluções, clique com o botão direito do mouse o projeto de DataReader e clique em Adicionar Referência.
Na guia Projects, Selecionar AdventureWorksDataSete, clique em OK de .
Abrir o arquivo Programa.cs ou Module1.vb no editor de códigos.
Adicionar o seguinte using (para C#) ou declaração de Imports (para o Visual Basic) para o início do arquivo código.
Imports Microsoft.VisualStudio.Tools.Applications
using Microsoft.VisualStudio.Tools.Applications;
Adicione o seguinte código ao método Main.Esse código declara os seguintes objetos:
Uma instância do tipo AdventureWorksLTDataSet definida no projeto AdventureWorksDataSet.
O caminho para a pasta de trabalho AdventureWorksReport na pasta de compilação do projeto AdventureWorksReport.
Um objeto de ServerDocument usar para acessar o cache de dados na pasta de trabalho.
Observação: O código a seguir presume que a pasta de trabalho é salva com o.xlsx extensão.Se a pasta de trabalho em seu projeto tiver 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 método de Main, após o código adicionado na etapa anterior.Esse código executa as seguintes tarefas:
Ele usa a propriedade CachedData da classe ServerDocument para acessar o dataset em cache na pasta de trabalho.
Ele lê os dados de o dataset em cache para o dataset local.
Ele exibe o número de linhas no dataset local, para confirmar que ele 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(); }
On the menu ComCompilação, clique em ComCompilação DataReader.
Testar o projeto.
Ao executar o Aplicativo do Console, ele exibe o número de linhas no dataset local.
Para testar a pasta de trabalho
Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto de DataReader, aponte para Depurare, em seguida, clique em Iniciar Novo instância.
Verifique se que o aplicativo relata que o dataset local tem linhas 295.
Pressionarionar ENTER para fechar o aplicativo.
Próximas etapas
Você pode saber mais sobre como trabalhar com dados em cache destes 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: Alterar dados em cache em uma pasta de trabalho em um servidor.
Consulte também
Tarefas
Como: Recuperar dados de uma pasta de trabalho em um servidor armazenados em cache
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: Alterar dados em cache em uma pasta de trabalho em um servidor