DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 288130 - Última revisão: segunda-feira, 14 de Maio de 2007 - Revisão: 5.2

 

Nesta página

Sumário

Este artigo ilustra o script do Microsoft Active Server Pages (ASP) que cria uma folha de cálculo no formato XMLSS (XML Spreadsheet) utilizando o componente de folha de cálculo do Office. O XMLSS pode ser apresentado lado do cliente de uma das várias formas:
  • No componente de folha de cálculo numa página Web
  • No Microsoft Excel apresentar directa no browser
  • Abertas directamente no Microsoft Excel

Mais Informação

Utilizar o componente de folha de cálculo no código do lado do servidor para criar folhas de cálculo fornece mais escalabilidade e um melhor desempenho quando comparado com a utilizar o server-side automatização do Microsoft Excel. Tal não recomment automatização de aplicações do Office, incluindo o Excel, no servidor. Este método deve ser evitado quando existem outras alternativas para alcançar os mesmos resultados ao utilizador. Pode manter XMLSS muitas das funcionalidades comuns ao componente de folha de cálculo e no Microsoft Excel. Multi-Sheet livros, formatação de células, filtro automático, fórmulas das células e re-calculation representam uma série dessas funcionalidades. O componente de folha de cálculo tem um modelo de objecto que se aproxime o modelo de objecto para o Microsoft Excel. Por conseguinte, se estiver familiarizado com o modelo de objecto do Excel, pode facilmente aplicar algumas o código de Excel existente, modificação, para utilização com o componente de folha de cálculo.

O exemplo seguinte demonstra como criar um livro multi-sheet no XMLSS utilizar o componente de folha de cálculo com o ASP. O exemplo também explica como pode apresentar o resultante XMLSS lado do cliente numa página Web ou no Microsoft Excel.

Script ASP para criar XMLSS utilizando o componente de folha de cálculo

Guarde o ASP seguinte como XMLSS.asp no directório virtual raiz do servidor Web. Por predefinição, o directório raiz é C:\Inetpub\Wwwroot.
<% Language=VBScript %>

<%
    Response.Buffer = True
    Response.ContentType = "text/xml"

    Dim NumOrders, NumProds, r
    NumOrders = 300
    NumProds = 10
        
    Dim oSS
    Dim oOrdersSheet
    Dim oTotalsSheet
    Dim oRange
    Dim c
    
    Set oSS = CreateObject("OWC10.Spreadsheet")
    Set c = oSS.Constants

    'Rename Sheet1 to "Orders", rename Sheet2 to "Totals" and remove Sheet3
    Set oOrdersSheet = oSS.Worksheets(1)
    oOrdersSheet.Name = "Orders"
    Set oTotalsSheet = oSS.Worksheets(2)
    oTotalsSheet.Name = "Totals"
    oSS.Worksheets(3).Delete
    
    '=== Build the First Worksheet (Orders) ==============================================
        
    'Add headings to A1:F1 of the Orders worksheet and apply formatting
    Set oRange = oOrdersSheet.Range("A1:F1")
    oRange.Value = Array("Order Number", "Product ID", "Quantity", "Price", "Discount", "Total")
    oRange.Font.Bold = True
    oRange.Interior.Color = "Silver"
    oRange.Borders(c.xlEdgeBottom).Weight = c.xlThick
    oRange.HorizontalAlignment = c.xlHAlignCenter
   
    'Apply formatting to the columns
    oOrdersSheet.Range("A:A").ColumnWidth = 20
    oOrdersSheet.Range("B:E").ColumnWidth = 15
    oOrdersSheet.Range("F:F").ColumnWidth = 20
    oOrdersSheet.Range("A2:E" & NumOrders + 1 _
        ).HorizontalAlignment = c.xlHAlignCenter
    oOrdersSheet.Range("D2:D" & NumOrders + 1).NumberFormat = "0.00"
    oOrdersSheet.Range("E2:E" & NumOrders + 1).NumberFormat = "0 % "
    oOrdersSheet.Range("F2:F" & NumOrders + 1).NumberFormat = "$ 0.00" '"_($* #,##0.00_)"
        
    'Obtain the order information for the first five columns in the Orders worksheet
    'and populate the worksheet with that data starting at row 2
    Dim aOrderData
    aOrderData = GetOrderInfo
    oOrdersSheet.Range("A2:E" & NumOrders + 1).Value = aOrderData
    
    'Add a formula to calculate the order total for each row and format the column
    oOrdersSheet.Range("F2:F" & NumOrders + 1).Formula = "=C2*D2*(1-E2)"
        oOrdersSheet.Range("F2:F" & NumOrders + 1).NumberFormat = "_(  $* #,##0.00   _)"

    'Apply a border to the used rows
    oOrdersSheet.UsedRange.Borders(c.xlInsideHorizontal).Weight = c.xlThin
    oOrdersSheet.UsedRange.BorderAround , c.xlThin, 15
    
    'Turn on AutoFilter and display an initial criteria where
    'the Product ID (column 2) is equal to 5
    oOrdersSheet.UsedRange.AutoFilter
    oOrdersSheet.AutoFilter.Filters(2).Criteria.FilterFunction = c.ssFilterFunctionInclude
    oOrdersSheet.AutoFilter.Filters(2).Criteria.Add "5"
    oOrdersSheet.AutoFilter.Apply
    
    'Add a Subtotal at the end of the usedrange
    oOrdersSheet.Range("F" & NumOrders + 3).Formula = "=SUBTOTAL(9, F2:F" & NumOrders + 1 & ")"
    
    'Apply window settings for the Orders worksheet
    oOrdersSheet.Activate   'Makes the Orders sheet active
    oSS.Windows(1).ViewableRange = oOrdersSheet.UsedRange.Address
    oSS.Windows(1).DisplayRowHeadings = False
    oSS.Windows(1).DisplayColumnHeadings = False
    oSS.Windows(1).FreezePanes = True
    oSS.Windows(1).DisplayGridlines = False
    
    '=== Build the Second Worksheet (Totals) ===========================================
    
    'Change the Column headings and hide row headings
    oTotalsSheet.Activate
    oSS.Windows(1).ColumnHeadings(1).Caption = "Product ID"
    oSS.Windows(1).ColumnHeadings(2).Caption = "Total"
    oSS.Windows(1).DisplayRowHeadings = False
    
    'Add the product IDs to column 1
    Dim aProductIDs
    aProductIDs = GetProductIDs
    oTotalsSheet.Range("A1:A" & NumProds).Value = aProductIDs
    oTotalsSheet.Range("A1:A" & NumProds).HorizontalAlignment = c.xlHAlignCenter

    'Add a formula to column 2 that computes totals per product from the Orders Sheet
    oTotalsSheet.Range("B1:B" & NumProds).Formula = _
        "=SUMIF(Orders!B$2:B$" & NumOrders + 1 & ",A1,Orders!F$2:F$" & NumOrders + 1 & ")"
    oTotalsSheet.Range("B1:B" & NumProds).NumberFormat = "_(  $* #,##0.00   _)"

    'Apply window settings for the Totals worksheet
    oSS.Windows(1).ViewableRange = oTotalsSheet.UsedRange.Address
    
    '=== Setup for final presentation ==================================================
    
    oSS.DisplayToolbar = False
    oSS.AutoFit = True
    oOrdersSheet.Activate

    Response.Write oSS.XMLData
    Response.End


Function GetOrderInfo()
    ReDim aOrderInfo(NumOrders,5)
    Dim aPrice, aDisc
    aPrice = Array(10.25, 9.5, 2.34, 6.57, 9.87, 4.55, 6, 13.05, 3.3, 5.5)
    aDisc = Array(0, 0.1, 0.15, 0.2)
    For r = 0 To NumOrders-1
        aOrderInfo(r, 0) = "'" & String(7-Len(CStr(r+1)), "0") & r+1 'Col 1 is Order Number
        aOrderInfo(r, 1) = Int(Rnd() * NumProds) + 1                 'Col 2 is Product ID
        aOrderInfo(r, 2) = Int(Rnd() * 20) + 1                       'Col 3 is Quantity
        aOrderInfo(r, 3) = aPrice(aOrderInfo(r, 1)-1)                'Col 4 is Price
        aOrderInfo(r, 4) = aDisc(Int(Rnd() * 4))                     'Col 5 is Discount
    Next
    GetOrderInfo = aOrderInfo
End Function

Function GetProductIDs()
    ReDim aPIDs(NumProds, 1)
    For r = 0 To NumProds-1
        aPIDs(r, 0) = r+1
    Next
    GetProductIDs = aPIDs
End Function

%>
				

Apresentar o XMLSS numa página Web

Para apresentar o exemplo XMLSS numa página Web, terá de apenas definir a propriedade XMLURL para um componente de folha de cálculo para o URL para o ASP, da seguinte forma:
<html>

<body>

<object classid="clsid:0002E551-0000-0000-C000-000000000046" id="Spreadsheet1">
  <param name="XMLURL" value="http://YourWebServer/xmlss.asp">
</object>

</body>

</html>
				
NOTA: se estiver a utilizar o Microsoft Office 2003, poderá ter de alterar o ID de classe no código acima conforme for aplicável.

Em HTML anterior, a propriedade XMLURL é definida utilizando um <param> tag. Também pode definir a propriedade XMLURL em tempo de execução se desejar, utilizando o seguinte código.
   Spreadsheet1.XMLURL = "http://YourWebServer/xmlss.asp"
				

Apresentar o XMLSS no Microsoft Excel

O XMLSS é criada com o componente de folha de cálculo pode ser aberto no Microsoft Excel. A formatação e funcionalidades que implementar no componente de folha de cálculo podem ser partilhadas com o Microsoft Excel. O componente de folha de cálculo suporta algumas funcionalidades que o Excel não. Além disso, o Excel suporta algumas funcionalidades que não o componente de folha de cálculo. Quaisquer tags XML ou atributos que o Excel não implementa são ignorados quando é aberto o XMLSS.

Para ver os resultados do script ASP de exemplo no Microsoft Excel, siga estes passos:
  1. Inicie o Microsoft Excel.
  2. No menu ficheiro , clique em Abrir .
  3. Na caixa Nome do ficheiro , escreva http://YourWebServer/xmlss.asp e, em seguida, clique em Abrir .
Examine o livro e note que os dados e formatos que foram aplicados em tempo de execução são todos os presentes no livro quando é aberto no Excel. Existe uma excepção: as cabeçalho legendas criadas no componente de folha de cálculo não suportam para o Excel porque se trata de uma funcionalidade do componente de folha de cálculo Microsoft Excel não partilha. Se criar XMLSS utilizando o componente de folha de cálculo para fins de apresentação do ficheiro no Excel, tenha em atenção as funcionalidades diferentes que cada suporta.

Outra forma de abrir o XMLSS criados pelo ASP no Microsoft Excel é fornecer o tipo de Excel MIME Multipurpose Internet Mail Extensions () como ContentType no ASP. Quando utiliza o tipo de MIME do Excel e navegue para o ASP, o XMLSS podem ser processadas no Microsoft Excel directa no browser. Para o fazer, siga estes passos:
  1. Abra XMLSS.asp num editor de texto.
  2. Altere a seguinte linha no script:
    Response.ContentType = "text/xml"
    					
    alterar a linha de código para ser semelhantes ao seguinte:
    Response.ContentType = "application/vnd.ms-excel"
    					
  3. Guardar as alterações para XMLSS.asp e, em seguida, inicie o Windows Internet Explorer.
  4. Procure http://YourWebServer/XMLSS.asp. Folha de cálculo XML é apresentada em Microsoft Excel hospedado no local no browser.

Referências

Para mais informações, visite o tópico de componentes Web do Office no seguinte Web site da Microsoft:
http://support.microsoft.com/ofd (http://support.microsoft.com/ofd)
Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
285891  (http://support.microsoft.com/kb/285891/ ) Como utilizar o Visual Basic ou ASP para criar uma folha de cálculo XML para o Excel 2002 e Excel 2003
278976  (http://support.microsoft.com/kb/278976/ ) Como utilizar XSL para transformar a folha de cálculo XML do Excel para utilização do lado do servidor
257757  (http://support.microsoft.com/kb/257757/ ) Considerações para o lado do servidor de automatização do escritório

A informação contida neste artigo aplica-se a:
  • Microsoft Office 2003 Web Components
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Active Server Pages 4.0
Palavras-chave: 
kbmt kbhowto kbofficewebspread KB288130 KbMtpt
Tradução automáticaTraduçã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: 288130  (http://support.microsoft.com/kb/288130/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft