COMO: Transferir dados XML para Microsoft Excel 2002 usando o Visual Basic .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 307021 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Excel 2002 apresenta funcionalidade para abrir arquivos no formato XML (Extensible Markup Language). Um arquivo XML que está bem formado pode ser aberto diretamente no Excel 2002 ou no Excel 2003 usando a interface do usuário ou o código.

Com o Visual Basic. NET, você pode aproveitar do Excel XML funcionalidade para transferir dados diretamente para uma pasta de trabalho para apresentar os dados com formatação e uma disposição de sua escolha. Este artigo demonstra como realizar essa tarefa.

Gerar XML a partir de um DataSet para usar no Excel 2002 ou no Excel 2003

Esta seção ilustra como criar um objeto DataSet e exportar os dados que ela contém para um arquivo XML usando o método WriteXML . O arquivo XML que é gerado pode ser aberto diretamente no Excel. Para fins de ilustração, o objeto de DataSet é criado do banco de dados de exemplo Northwind do Microsoft Access usando o provedor de OLEDB do Jet. No entanto, o código semelhante funciona com qualquer objeto de DataSet que você criar com o Visual Basic. NET.
  1. Inicie o Microsoft Visual Studio NET.. No menu arquivo , clique em novo e, em seguida, clique em Project . Selecione Windows Application dos tipos de projetos do Visual Basic. O Form1 é criado por padrão.
  2. No menu Exibir , selecione a caixa de ferramentas para exibir a caixa de ferramentas e adicionar um botão ao Form1.
  3. Clique duas vezes em Button1 . A janela de código para o formulário é exibida.
  4. Adicione a seguinte variável de membro privado o Form1 classe:
        Private strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb;"
    					
    Observação : talvez seja necessário modificar o caminho para o Northwind.mdb na seqüência de conexão para corresponder à sua instalação.

  5. Adicione o seguinte código ao manipulador Button1_Click :
            'Connect to the data source.
            Dim objConn As New System.Data.OleDb.OleDbConnection(strConn)
    
            Try
            objConn.Open()
    
            'Fill a dataset with records from the Customers table.
            Dim strSQL As String
            Dim objDataset As New DataSet()
            Dim objAdapter As New System.Data.OleDb.OleDbDataAdapter()
            strSQL = "Select CustomerID, CompanyName, ContactName, " & _
                     "Country, Phone from Customers"
            objAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand( _
                strSQL, objConn)
            objAdapter.Fill(objDataset)
    
            ' Create the FileStream to write with.
            Dim strFilename As String
            strFilename = "C:\Customers.xml"
            Dim fs As New System.IO.FileStream(strFilename, _
                System.IO.FileMode.Create)
    
            'Create an XmlTextWriter for the FileStream.
            Dim xtw As 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()
    
            MsgBox("Customer data has been exported to C:\Customers.xml.")
    
            Catch ex As Exception
                    MsgBox(ex.Message)
            End Try
    					
  6. Pressione F5 para compilar e executar o programa.
  7. Clique em Button1 para criar o arquivo XML, feche Formulário1 para finalizar o programa.
  8. Inicie o Excel 2002 ou o Excel 2003 e abra o arquivo de saída C:\Customers.xml.
  9. Após você ter observado como o XML tem sido analisado em linhas e colunas na nova pasta de trabalho, feche o arquivo e saia do Excel.

Formatar o XML usando uma folha de estilos

Esta etapa mostra como usar uma folha de estilos (XSL) para transformar como dados XML formatados e organizados em uma pasta de trabalho do Excel.
  1. Usando qualquer editor de HTML ou um editor de texto (como o Notepad.exe), salve o seguinte XSL como 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. Descomente a linha de código no manipulador de Button1_Click a seguir:
            xtw.WriteProcessingInstruction( _
                "xml-stylesheet", "type='text/xsl' href='customers.xsl'")
    					
    esta linha de código grava uma instrução de processamento para o arquivo XML que o Excel usa para localizar a folha de estilos (Customers.xsl).

  3. Pressione F5 para compilar e executar o programa.
  4. Clique em Button1 para criar o arquivo XML, feche Formulário1 para finalizar o programa.
  5. Inicie o Excel 2002 ou o Excel 2003 e abra o arquivo de saída C:\Customers.xml.
  6. Porque o Excel vê a instrução de processamento para a folha de estilos no XML, você recebe um prompt de caixa de diálogo quando você abrir o arquivo. Na caixa de diálogo Importar XML , selecione Abrir o arquivo com a seguinte folha de estilos aplicada . Na lista, selecione Customers.xsl e clique em OK . Observe que os dados XML são formatados e que as colunas têm sido organizadas de acordo com a folha de estilos.
  7. Feche o arquivo e feche o Excel.

Usar código para abrir o XML transformado

Até este ponto, você abriu o arquivo XML usando a interface do usuário no Excel. Esta seção demonstra como automatizar o Excel para abrir a pasta de trabalho por meio de programação. O exemplo a seguir ilustra como abrir o XML transformado sem a intervenção do usuário, primeiro transformar o XML no objeto DataSet para HTML.
  1. No projeto Visual Basic.NET, adicione outro botão ao Form1.
  2. Clique duas vezes em Button2 . Quando a janela de código para o formulário é exibido, adicione o código a seguir ao Button2_Click manipulador:
            'Connect to the data source.
            Dim objConn As New System.Data.OleDb.OleDbConnection(strConn)
            objConn.Open()
    
            'Fill a dataset with records from the Customers table.
            Dim strSQL As String
            Dim objDataset As New DataSet()
            Dim objAdapter As New System.Data.OleDb.OleDbDataAdapter()
            strSQL = "Select CustomerID, CompanyName, ContactName, " & _
                     "Country, Phone from Customers"
            objAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand( _
                strSQL, objConn)
            objAdapter.Fill(objDataset)
    
            ' Create the FileStream to write with.
            Dim strFilename As String
            strFilename = "C:\Customers.htm"
            Dim fs As New System.IO.FileStream(strFilename, _
                System.IO.FileMode.Create)
    
            'Create an XmlTextWriter for the FileStream.
            Dim xtw As New System.Xml.XmlTextWriter(fs, _
                System.Text.Encoding.Unicode)
    
            'Transform the XML using the stylesheet.
            Dim xmlDoc As System.Xml.XmlDataDocument = _
                New System.Xml.XmlDataDocument(objDataset)
            Dim xslTran As System.Xml.xsl.XslTransform = _
                New System.Xml.Xsl.XslTransform()
            xslTran.Load("c:\customers.xsl")
            xslTran.Transform(xmlDoc, Nothing, xtw)
    
            'Write the transformed XML to the file.
            objDataset.WriteXml(xtw)
            xtw.Close()
    
            'Start Excel and open the resulting file.
            Dim oExcel As Object
            oExcel = CreateObject("Excel.Application")
            oExcel.Workbooks.Open("C:\Customers.htm")
    
            'Make Excel visible and give the user control of the application.
            oExcel.Visible = True
            oExcel.UserControl = True
    					
  3. Pressione F5 para compilar e executar o programa.
  4. Clique em Button2 para abrir o XML transformado no Microsoft Excel.
Observação : Embora o Excel 2002 e modelo de objeto do Excel 2003 expor um método de OpenXML permite abrir um arquivo XML com folhas de estilos aplicadas por meio de programação, o exemplo anterior não chama esse método devido a um problema conhecido com o uso desse método de um cliente de automação. O método OpenXML funciona como esperado quando ele é chamado de uma macro do Excel; no entanto, quando esse método é chamado de um cliente de automação, o parâmetro de folha de estilos é ignorado. Para obter informações adicionais, clique no número abaixo para ler 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 obter mais informações, consulte seguintes artigos da Base de dados de Conhecimento:
288215INFO: Microsoft Excel 2002 e XML
301982COMO: Automatizar Microsoft Excel a partir do Visual Basic .NET
306022COMO: Transferir dados para uma pasta de trabalho do Excel usando o Visual Basic .NET
285891COMO: Utilizar o Visual Basic ou ASP para criar uma planilha XML para o Excel 2002
320369Erro: Erro de "Old Format ou Invalid Type Library" ao automatizar o Excel 2002

Propriedades

ID do artigo: 307021 - Última revisão: sexta-feira, 12 de dezembro de 2003 - Revisão: 6.2
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft Excel 2002 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster KB307021 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307021

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