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

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
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: TotalA2: 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:
DownloadDownload 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): 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
xmlsprd

Propriedades

ID do Artigo: 285891 - Última Revisão: 03/19/2007 06:09:22 - Revisão: 7.4

Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Active Server Pages 4.0, Microsoft Visual Basic 6.0 Professional Edition

  • kbmt kbdownload kbhowto KB285891 KbMtpt
Comentários