Como a transferência de dados XML para o Microsoft Excel 2002 ou Microsoft Excel 2003 utilizando o Visual C#

Traduções de Artigos Traduções de Artigos
Artigo: 307029 - Ver produtos para os quais este artigo se aplica.
Para obter uma Microsoft Visual Basic .NET versão deste artigo, consulte 307021.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Excel 2002 apresenta funcionalidade para abrir ficheiros no formato XML (Extensible Markup Language). Um ficheiro XML correctamente formado possível abrir directamente no Excel 2002 ou no Excel 2003 utilizando a interface de utilizador ou o código.

Com o Microsoft Visual C# .NET ou Microsoft Visual C# 2005, pode tirar partido das funcionalidades XML do Excel para facilmente transferir dados para um livro para apresentar os dados com formatação e disposição da sua escolha. Este artigo demonstra como realizar esta tarefa.

Gerar XML a partir de um DataSet para utilização no Excel 2002 ou no Excel 2003

Esta secção mostra como criar um objecto DataSet e exportar os dados que contenha para um ficheiro XML utilizando o método WriteXML . O ficheiro XML gerado pode ser aberto directamente no Excel. Por motivos de ilustração, o objecto de DataSet é criado da dados de exemplo Adamastor do Microsoft Access utilizando o fornecedor de OLEDB do Jet. No entanto, o código semelhante funciona com qualquer objecto do DataSet que criar com o Visual C# 2005 ou o Visual C#. NET.
  1. Inicie o Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET. No menu ficheiro , clique em Novo e em seguida, clique em projecto . Seleccione os tipos de Visual C# Projects Aplicação do Windows . É criado o Form1 por predefinição.
  2. No menu Ver , seleccione a caixa de ferramentas para visualizar a caixa de ferramentas dos controlos e adicionar um botão ao Form1.
  3. Faça duplo clique em Button1 . Aparece a janela código para o formulário.
  4. Adicione as directivas de utilizar o seguinte na parte superior de Form1.cs:
    using System.Data.OleDb;
    using System.Xml;
    					
  5. Adicione a seguinte variável de membro privado à classe Form1:
    private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    	+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
    	+ "Northwind.mdb;";
    					
    NOTA: poderá ter de modificar o caminho para a base de dados Adamastor.mdb na cadeia de ligação para corresponder a instalação.
  6. Adicione o seguinte código ao processador button1_Click :
    //Connect to the data source.
             OleDbConnection objConn = new OleDbConnection (strConn);
             try
             {
                objConn.Open();			
    
                //Fill a dataset with records from the Customers table.
                OleDbCommand objCmd = new OleDbCommand(
                   "Select CustomerID, CompanyName, ContactName, " 
                   + "Country, Phone from Customers", objConn);
                OleDbDataAdapter objAdapter = new OleDbDataAdapter();
                objAdapter.SelectCommand = objCmd;
                DataSet objDataset = new DataSet();
                objAdapter.Fill(objDataset);
    
    
                //Create the FileStream to write with.
                System.IO.FileStream fs = new System.IO.FileStream(
                   "C:\\Customers.xml", System.IO.FileMode.Create);
    
                //Create an XmlTextWriter for the FileStream.
                System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
                   fs, System.Text.Encoding.Unicode);
    
                //Add processing instructions to the beginning of the XML file, one 
                //of which indicates a style sheet.
                xtw.WriteProcessingInstruction("xml", "version='1.0'");
                //xtw.WriteProcessingInstruction("xml-stylesheet", 
                  // "type='text/xsl' href='customers.xsl'");
    
                //Write the XML from the dataset to the file.
                objDataset.WriteXml(xtw);
                xtw.Close();
    
                //Close the database connection.
                objConn.Close();
             }
             catch (System.Exception ex)
             {
                MessageBox.Show(ex.Message);
             } 
    					
    NOTA: tem de alterar o código do Visual Studio 2005. Por predefinição, Visual C# adiciona um formulário ao projecto quando cria um projecto de Windows Forms. O formulário é denominado Form1. Os dois ficheiros que representam o formulário são denominados Form1.cs e Form1.Designer.cs. Tem de escrever o código no Form1.cs. O ficheiro Form1.Designer.cs é onde o Windows Forms Designer escreve o código que implementa todas as acções efectuadas arrastando e largando controlos da caixa de ferramentas.

    Para obter mais informações sobre o Windows Forms Designer no Visual C# 2005, visite o seguinte Microsoft Developer Network) Web site da MSDN:
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx
  7. Prima F5 para compilar e executar o programa.
  8. Clique em Button1 para criar o ficheiro XML e fechar Form1 para terminar o programa.
  9. Inicie o Excel 2002 ou o Excel 2003 e abra o ficheiro de saída C:\Customers.xml.
  10. Depois de ter detectado como o XML tem sido analisado em linhas e colunas no novo livro, feche o ficheiro e saia do Excel.

Formatar XML utilizando uma Stylesheet

Este passo mostra como utilizar uma folha de estilos (XSL) para transformar como dados XML são formatados e organizados num livro do Excel.
  1. Using any HTML editor or a text editor (such as Notepad.exe), save the following XSL as C:\Customers.xsl:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <HTML>
          <HEAD>
            <STYLE>   
              .HDR { background-color:bisque;font-weight:bold }
            </STYLE>
          </HEAD>
          <BODY>
            <TABLE>
              <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <TD CLASS="HDR">Customer ID</TD>
              <TD CLASS="HDR">Company</TD>
              <TD CLASS="HDR">Contact</TD>
              <TD CLASS="HDR">Country</TD>
              <TD CLASS="HDR">Phone</TD>
              <xsl:for-each select="NewDataSet/Table">
                <TR>
                  <TD><xsl:value-of select="CustomerID"/></TD>
                  <TD><xsl:value-of select="CompanyName"/></TD>
                  <TD><xsl:value-of select="ContactName"/></TD>
                  <TD><xsl:value-of select="Country"/></TD>
                  <TD><xsl:value-of select="Phone"/></TD>
                </TR>
              </xsl:for-each>
            </TABLE>
          </BODY>
        </HTML>
      </xsl:template>
    </xsl:stylesheet> 
    					
  2. A seguinte linha de código no processador de button1_Click uncomment:
    xtw.WriteProcessingInstruction("xml-stylesheet", 
    	"type='text/xsl' href='customers.xsl'");
    					
    esta linha de código escreve uma instrução de processamento para o ficheiro XML que o Excel utiliza para localizar a folha de estilos (Customers.xsl).

  3. Prima F5 para compilar e executar o programa.
  4. Clique em Button1 para criar o ficheiro XML e fechar Form1 para terminar o programa.
  5. Inicie o Excel 2002 ou o Excel 2003 e abra o ficheiro de saída C:\Customers.xml.
  6. Porque o Excel vê a instrução de processamento para a folha de estilos no XML, recebe um pedido de caixa de diálogo quando abrir o ficheiro. Na caixa de diálogo Importar XML , seleccione Abrir o ficheiro com a seguinte folha de estilos aplicada . Na lista, seleccione Customers.xsl e clique em OK . Tenha em atenção que os dados XML estão formatados e que as colunas tem sido dispostas de acordo com a folha de estilos.
  7. Feche o ficheiro e saia do Excel.

Utilizar o código para abrir o XML transformado

Cópia para este ponto, abriu o ficheiro XML utilizando a interface de utilizador no Excel. Esta secção demonstra como automatizar o Excel para abrir o livro programaticamente. O exemplo que se segue ilustra a abrir o XML transformado sem intervenção do utilizador, primeiro transformar o XML no objecto DataSet para HTML.
  1. Adicione uma referência para o Microsoft Excel 10.0 Object Library ou Microsoft Excel 11.0 Object Library . Para o fazer, siga estes passos:
    1. No menu projecto , clique em Add Reference .
    2. No separador COM , localize Microsoft Excel 10.0 Object Library ou Microsoft Excel 11.0 Object Library e clique em Seleccionar .
    3. Clique em OK na caixa de diálogo Adicionar referências para aceitar a selecção. Se receber um pedido para gerar mensagens publicitárias para a biblioteca que seleccionou, clique em Sim .
  2. Adicione as directivas de utilizar o seguinte na parte superior de Form1.cs:
    using Excel = Microsoft.Office.Interop.Excel;
    					
  3. No projecto Visual C# 2005 ou do Visual C#. NET, adicione outro botão ao Form1.
  4. Faça duplo clique em Button2 . Quando a janela de código para o formulário aparece, adicione o seguinte código ao Button2_Click processador:
    //Connect to the data source.
    OleDbConnection objConn = new OleDbConnection (strConn);
    objConn.Open();			
    
    //Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    	"Select CustomerID, CompanyName, ContactName, " 
    	+ "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);
    
    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    	"C:\\Customers.htm", System.IO.FileMode.Create);
    
    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    	fs, System.Text.Encoding.Unicode);
    
    //Transform the XML using the stylesheet.
    XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
    System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
    xslTran.Load("C:\\Customers.xsl");
    xslTran.Transform(xmlDoc, null, xtw);
    
    //Open the HTML file in Excel.
    Excel.Application oExcel = new Excel.Application();
    oExcel.Visible=true;
    oExcel.UserControl=true;
    Excel.Workbooks oBooks = oExcel.Workbooks;
    object oOpt = System.Reflection.Missing.Value; //for optional arguments
    oBooks.Open("c:\\customers.htm", oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt);
    
    					
  5. Prima F5 para compilar e executar o programa.
  6. Clique em Button2 para abrir o XML transformado no Excel.
Nota Enquanto o Excel 2002 e Excel 2003 Object Model expõe um método de OpenXML permite-lhe programaticamente abrir um ficheiro XML com folhas de estilos aplicadas, o exemplo anterior não chama este método devido a um problema conhecido com a utilização deste método a partir de um cliente de automatização. O método OpenXML funciona como previsto quando chamado a partir de uma macro do Excel; no entanto, quando este método é chamado a partir de um cliente de automatização, o parâmetro de folhas de estilo é ignorado. Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
307230Erro: Parâmetro StyleSheets do método OpenXML ignoradas ao automatizar o Excel 2002

Referências

Para mais informações, consulte os seguintes artigos da base de dados de conhecimento da:
288215INFO: Microsoft Excel 2002 e XML
302084Como automatizar o Microsoft Excel a partir do Visual C# .NET
301216Como preencher um objecto de DataSet a partir de uma base de dados utilizando o Visual Basic .NET
306023Como transferir dados para um livro do Excel utilizando o Visual C# .NET

Propriedades

Artigo: 307029 - Última revisão: 11 de dezembro de 2006 - Revisão: 7.5
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ADO.NET 1.0
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office Excel 2003
Palavras-chave: 
kbmt kbhowtomaster KB307029 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307029

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com