Como usar o Visual Basic ou ASP para criar uma planilha XML para Excel 2002 e Excel 2003

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

Sumário

Microsoft Excel 2002 e Microsoft Office Excel 2003 oferecem suporte a um formato XML com o qual eles podem carregar e salvar pastas de trabalho (ou planilhas XML). Usando este formato de planilha XML, você pode criar multi-sheet, formatado pastas de trabalho para o Excel sem usar automação. Essa abordagem pode ser desejável quando você precisa para criar um Excel pasta de trabalho, mas não é viável para automatizar o Excel (como em um servidor Web ou de um serviço) ou Excel não está instalado no sistema em que seu código é executado.

Este artigo ilustra como você pode criar um modelo XML que, quando usado com transformação XSL (linguagem de folha de estilos extensível), gera uma pasta de trabalho formatada que pode ser aberta diretamente no Excel. O XML é demonstrada transformação para Active Server Pages (ASP) e Visual Basic. Com relação ao exemplo de código Visual Basic, os dados da planilha são gerados somente com XML/XSL; automação mínimo é usada para abrir os resultados no Excel.

Observação O exemplo descrito neste artigo está disponível para download; para instruções de download, consulte a seção de download no final deste artigo.

Mais Informações

Criar o modelo XML para a pasta de trabalho

  1. Crie uma nova pasta, C:\ExcelXML.
  2. No Excel, inicie uma nova pasta de trabalho. Adicione os seguintes dados A1:F2 células da pasta de trabalho nas células indicado. Célula F2 devem ser inseridos como uma fórmula.
    A1: Order ID    B1: Product ID   C1: Unit Price   D1: Quantity   E1: Discount  F1: Total
    A2: aaa         B2: 111          C2: 222          D2: 333        E2: 0         F2: =C2*D2*(1-E2)
  3. Na célula F3, digite a seguinte fórmula:
    =SUM(F$2:F2)
  4. Selecionar as células A1:F1. No menu Formatar , clique em células . Aplicar uma fonte em negrito, uma borda inferior e uma cor sólida para o sombreado de célula. Clique em OK .
  5. Selecione colunas A:F. no menu Formatar , aponte para coluna e, em seguida, clique em largura . Digite 15 para a nova largura da coluna e clique em OK . Com A:F colunas ainda selecionados, no menu Formatar , clique em células . Na guia Alinhamento , selecione Central da lista Alinhamento horizontal e, em seguida, clique em OK .
  6. Selecione a coluna e. No menu Formatar , clique em células . Na guia número , clique em porcentagem e especificar 0 casas decimais e, em seguida, clique em OK .
  7. Selecione a coluna f. No menu Formatar , clique em células . Na guia número , clique em estatísticas e, em seguida, clique em OK .
  8. Selecionar as células A3:F3. No menu Formatar , clique em Altura da linha , digite 25 e, em seguida, clique em OK . Com A3:F3 ainda selecionados, no menu Formatar , clique em células . Aplicar uma borda superior às células e, em seguida, clique em OK .
  9. No menu Ferramentas , clique em Opções . Na guia Exibir , desmarque a caixa de seleção linhas de grade e clique em OK .
  10. Selecione a linha 2. No menu janela , clique em Congelar painéis .
  11. Selecione a célula.
  12. No menu arquivo , clique em Salvar como . Vá para a pasta C:\ExcelXML que você criou e salve a pasta de trabalho como "Orders.xsl" no formato Planilha XML .

    Observação : na caixa de nome de arquivo na caixa de diálogo Salvar como , coloque o nome do arquivo entre aspas duplas para que uma extensão .XML não é adicionada ao nome do arquivo.
  13. Feche o Excel.
  14. Abra Orders.xsl em qualquer editor de texto, como o bloco de notas.
  15. Insira o seguinte entre o <? xml versão = "1.0"? > marca e a marca <workbook>:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">
    <xsl:pi name="xml">version="1.0"</xsl:pi>
    					
  16. No final de Orders.xsl, acrescentar as duas linhas seguintes:
    </xsl:template>
    </xsl:stylesheet>
    					
  17. Localize o seguinte conjunto de marcas no Orders.xsl (este conjunto de marcas representa A2:F2 células na planilha)
       <Row ss:Height="14.25">
        <Cell><Data ss:Type="String">aaa</Data></Cell>
        <Cell><Data ss:Type="Number">111</Data></Cell>
        <Cell><Data ss:Type="Number">222</Data></Cell>
        <Cell><Data ss:Type="Number">333</Data></Cell>
        <Cell><Data ss:Type="Number">0</Data></Cell>
        <Cell ss:Formula="=RC[-3]*RC[-2]*1*(1-RC[-1])"><Data ss:Type="Number">73926</Data></Cell>
       </Row>
    					
    e substituí-lo com o seguinte código XSL:
    <xsl:for-each select="xml/rs:data/z:row">
       <Row ss:AutoFitHeight="0" ss:Height="13.5">
        <Cell><Data ss:Type="String"><xsl:value-of select="@OrderID"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@ProductID"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@UnitPrice"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@Quantity"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@Discount"/></Data></Cell>
        <Cell ss:Formula="=RC[-3]*RC[-2]*(1-RC[-1])"><Data ss:Type="Number">0</Data></Cell>
       </Row>
    </xsl:for-each>
    					
  18. Salvar as alterações para Orders.xsl e feche o arquivo.

Usar o Visual Basic para transformar um recordset ADO persistentes XML em uma planilha XML

  1. No Visual Basic, crie um EXE padrão novo projeto.
  2. No menu Project , clique em referências . Selecione o tipo de bibliotecas para Microsoft ActiveX Data Object 2.5 (ou posterior) e Microsoft XML 3.0 .
  3. Adicione um CommandButton ao Form1 e adicione o código a seguir para Click do botão evento:
        Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                      "C:\program files\microsoft office\office10\samples\Northwind.mdb"
        Const sOutXML = "C:\ExcelXML\Orders.xml"
        Const sXSL = "C:\ExcelXML\Orders.xsl"
        
        'Retrieve an ADO recordset of the Orders Detail table in Northwind.
        Dim nRecords As Long, nFields As Long
        Dim rs As New ADODB.Recordset
        rs.Open "SELECT * FROM [Order Details]", sConn, adOpenStatic, adLockOptimistic
            
        'Persist the recordset to a new DOMDocument and store the record count.
        Dim oXML As New DOMDocument
        rs.Save oXML, adPersistXML
        nRecords = rs.RecordCount
        nFields = rs.Fields.Count
        rs.Close
          
        'Load the XSL (the workbook template with XSL directives) into a DOMDocument.
        Dim oXSL As New DOMDocument
        oXSL.Load sXSL
        
        'Transform the XML using the style sheet.
        Dim oResults As New DOMDocument
        oXML.transformNodeToObject oXSL, oResults
        
        If oXSL.parseError.errorCode <> 0 Then
            MsgBox "Parse Error: " & oResults.parseError.reason
        Else
           'Modify the ss:ExpandedRowCount attribute for the <table> node to
           'indicate the correct number of rows (count of records + 1 row for
           'the header + 1 row for the total).
            Dim oTable As MSXML2.IXMLDOMElement
            Set oTable = oResults.selectSingleNode("Workbook/Worksheet/Table")
            oTable.setAttribute "ss:ExpandedRowCount", nRecords + 2
    
            '***************************************
            'Save the results to a file.
            Open sOutXML For Output As #1
            Print #1, oResults.xml
            Close #1
    
            'Open the XML in Excel.
            Dim oExcel As Object
            Set oExcel = CreateObject("Excel.Application")
            oExcel.Workbooks.Open sOutXML
            oExcel.Visible = True
            oExcel.UserControl = True
            '***************************************
        End If
    					
    Observação se necessário, modifique a conexão seqüência de caracteres (Const sConn) para que contenha o caminho de instalação correto para o Access Northwind de exemplo banco de dados.
  4. Pressione F5 para executar o programa.
  5. Clique no botão no Form1. Os dados de detalhes pedidos tabela no banco de dados Northwind aparece no modelo de pasta de trabalho do Excel que você criou.
O exemplo gera a planilha XML e o Excel automatiza usando o método Open da coleção Workbooks para abrir o XML como uma nova pasta de trabalho. Como uma abordagem alternativa, você pode inserir diretamente o XML em uma planilha existente em uma célula específica. Para ilustrar, substitua o código que está contido entre os asteriscos com o seguinte:
        'Display the data in a workbook starting at cell B2.
        Dim oExcel As Object, oBook As Object
        Set oExcel = CreateObject("Excel.Application")
        Set oBook = oExcel.Workbooks.Add
        oBook.Worksheets(1).Range("B2").Resize(nRecords + 2, nFields + 1).Value(11) = _
            oResults.xml 'Note: xlRangeValueXMLSpreadsheet=11
        oExcel.Visible = True
        oExcel.UserControl = True
				
após fazer essa alteração, execute o programa novamente. Observe que, desta vez, os dados de planilha XML são inseridos uma nova pasta de trabalho começando na célula B2 da primeira planilha. Formatos e os dados da célula são aplicados ao intervalo; no entanto, usar essa abordagem, configurações específicas para as linhas, colunas, planilha e pasta de trabalho não são transportadas.

Usar o ASP para transformar um recordset ADO persistentes XML em uma planilha XML

  1. Cole o seguinte código no bloco de notas. Salve o código como ExcelXML.asp na pasta raiz virtual do seu servidor Web. Observação A pasta da raiz virtual padrão é C:\inetpub\wwwroot.
    <%@ Language="vbscript"%>
    
    <%
    
        Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\program files\microsoft office\office10\samples\Northwind.mdb"
        Const sXSL = "C:\ExcelXML\Orders.xsl"
        
        Response.Buffer = True
    
        'Retrieve an ADO recordset of the Orders Detail table in Northwind.
        Dim rs, nRecords
        Set rs = CreateObject("ADODB.Recordset")
        rs.Open "SELECT * FROM [Order Details]", sConn, 3, 3
            
        'Persist the recordset to a new DOMDocument and store the record count.
        Dim oXML
        Set oXML = CreateObject("Microsoft.XMLDOM")
        rs.Save oXML, 1
        nRecords = rs.RecordCount
        rs.Close
          
        'Load the XSL (the workbook template with XSL directives) into a DOMDocument.
        Dim oXSL
        Set oXSL = CreateObject("Microsoft.XMLDOM")
        oXSL.Load sXSL
        
        'Transform the XML using the style sheet.
        Dim oResults
        Set oResults = CreateObject("Microsoft.XMLDOM")
        oXML.transformNodeToObject oXSL, oResults
        
        If oXSL.parseError.errorCode <> 0 Then
           Response.Write "Parse Error: " & oResults.parseError.reason
        Else
    
           'Modify the ss:ExpandedRowCount attribute for the <table> node in the XSL.
            Dim oTable
            Set oTable = oResults.selectSingleNode("Workbook/Worksheet/Table")
            oTable.setAttribute "ss:ExpandedRowCount", nRecords + 2
    
            'Return the resulting XML Spreadsheet for display in Excel.
            Response.ContentType = "application/vnd.ms-excel"
            Response.Charset = "ISO-8859-1"
            Response.Write oResults.XML
            Response.Flush
    
        End If
    
    %>
    					
    Observação se necessário, modifique a conexão seqüência de caracteres (Const sConn) para que contenha o caminho de instalação correto para o Access Northwind de exemplo banco de dados.

  2. Inicie o Internet Explorer e navegue até http:// YourWebServer / ExcelXML.asp, onde YourWebServer é o nome do seu servidor Web. Os dados de detalhes pedidos tabela no banco de dados Northwind aparece no modelo de pasta de trabalho do Excel que você criou.

Observações adicionais

Os seguintes recursos do Excel não podem ser mantidos com o XML formato de planilha:
  • Gráficos
  • Objetos OLE
  • Formas do desenho ou AutoFormas
  • Projetos do VBA
  • Grupo de estrutura de tópicos

Fazer o download

XMLSpread.exe contém a folha de estilos XML, projeto Visual Basic e script ASP descrito neste artigo. O seguinte arquivo está disponível para download no Centro de download da Microsoft:
Recolher esta imagemExpandir esta imagem
Download
Download the Xmlsprd.exe package now.Data de lançamento: 27 de março de 2001

Para obter mais informações sobre como baixar os arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
119591Como obter arquivos de suporte da Microsoft de serviços on-line
Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.

Referências

Para obter mais informações sobre como salvar conjuntos de registros ADO em XML, Formatar, consulte a seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms681538.aspx
Para obter mais informações sobre fluxo de conteúdo MIME para Microsoft Office aplicativos, clique no números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
266263Erro: Word 2000 e Excel 2000 exibem origem ASP ao usar o tipo de MIME para fluxo de dados
199841Como exibir ASP resultados usando o Excel no Internet Explorer com tipos de MIME
271572Como formatar uma pasta de trabalho do Excel ao fluxo contínuo de conteúdo MIME
307021Como transferir dados XML para o Microsoft Excel 2002 usando o Visual Basic .NET

Propriedades

ID do artigo: 285891 - Última revisão: segunda-feira, 19 de março de 2007 - Revisão: 7.4
A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Active Server Pages 4.0
  • Microsoft Visual Basic 6.0 Professional Edition
Palavras-chave: 
kbmt kbdownload kbhowto KB285891 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: 285891

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