Cómo utilizar ASP para crear hoja de cálculo XML para el lado del cliente

Seleccione idioma Seleccione idioma
Id. de artículo: 288130 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo ilustra la secuencia de comandos de páginas Active Server (ASP) de Microsoft que crea una hoja de cálculo en el formato de hoja de cálculo XML (XMLSS) mediante el componente Spreadsheet de Office. El XMLSS puede ser mostrada en el cliente de varias maneras:
  • En el componente de hoja de cálculo en una página Web
  • En Microsoft Excel se muestra in situ en el explorador
  • Abrir directamente en Microsoft Excel

Más información

Mediante el componente de hoja de cálculo de código del lado del servidor para crear hojas de cálculo proporciona mayor escalabilidad y un mejor rendimiento en comparación con usando automatización del lado del servidor de Microsoft Excel. Hacemos no recomment automatización de aplicaciones Office, como Excel, en el servidor. Este método debe evitarse cuando otras alternativas para lograr los mismos resultados están disponibles para usted. Puede conservar XMLSS muchas de las características comunes al componente de hoja de cálculo y Microsoft Excel. Libros multi-Sheet, formato de celda, Autofiltro, fórmulas de celda y re-calculation representan un puñado de esas características. El componente de hoja de cálculo tiene un modelo de objetos que coincida con el modelo de objetos de Microsoft Excel. Por lo tanto, si está familiarizado con el modelo de objetos de Excel, puede aplicar fácilmente parte su código de Excel existente, con modificaciones, para utilizar con el componente Spreadsheet.

En el siguiente ejemplo muestra cómo generar un libro multi-sheet en XMLSS mediante el componente hoja de cálculo con ASP. El ejemplo también explica cómo puede mostrar el resultante XMLSS cliente en una página Web o en Microsoft Excel.

Secuencia de comandos ASP para generar XMLSS mediante el componente de hoja de cálculo

Guarde el siguiente ASP como XMLSS.asp en el directorio raíz virtual del servidor Web. De forma predeterminada, el directorio raíz es 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

%>
				

Mostrar el XMLSS en una página Web

Para mostrar en el ejemplo XMLSS en una página Web, sólo deberá establecer la propiedad XMLURL de un componente hoja de cálculo a la dirección URL de ASP, como sigue:
<html>

<body>

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

</body>

</html>
				
Nota si está utilizando Microsoft Office 2003, quizás tenga que cambiar el classid en el código anterior aplicable.

En el HTML anterior, la propiedad XMLURL se establece utilizando un <param> etiqueta. También se podría establecer la propiedad XMLURL en tiempo de ejecución si lo desea, mediante el código siguiente.
   Spreadsheet1.XMLURL = "http://YourWebServer/xmlss.asp"
				

Mostrar el XMLSS en Microsoft Excel

El XMLSS creada con el componente de hoja de cálculo puede abrirse en Microsoft Excel. Formato y funciones que se implementa en el componente de hoja de cálculo pueden compartirse con Microsoft Excel. El componente Spreadsheet es compatible con algunas características que Excel no. Además, Excel admite algunas características que el componente Spreadsheet no. Las etiquetas XML o atributos que Excel no implementa se omiten cuando se abre el XMLSS.

Para ver los resultados de la secuencia de comandos ASP de ejemplo en Microsoft Excel, siga estos pasos:
  1. Inicie Microsoft Excel.
  2. En el menú archivo , haga clic en Abrir .
  3. En el cuadro Nombre de archivo , escriba http://YourWebServer/xmlss.asp y a continuación, haga clic en Abrir .
Examine el libro y observe que los datos y formatos que se aplicaron en tiempo de ejecución están todos los presentes en el libro cuando éste se abre en Excel. Hay una excepción: los títulos de encabezado que se crean en el componente Spreadsheet no llevan a través a Excel ya que es una característica del componente hoja de cálculo que Microsoft Excel no se comparte. Si crear XMLSS mediante el componente de hoja de cálculo con el fin de mostrar el archivo en Excel, tener en cuenta las distintas características que admite cada.

Otra forma de abrir el XMLSS ASP creada en Microsoft Excel es proporcionar el tipo MIME (Extensiones multipropósito de correo de Internet) de Excel como el ContentType en la página ASP. Cuando se utiliza el tipo MIME de Excel y vaya a la página ASP, se puede representar el XMLSS en Microsoft Excel en lugar de en el explorador. Para ello, siga estos pasos:
  1. Abra XMLSS.asp en un editor de texto.
  2. Cambie la línea siguiente en la secuencia de comandos:
    Response.ContentType = "text/xml"
    					
    cambiar la línea de código similares a los siguientes:
    Response.ContentType = "application/vnd.ms-excel"
    					
  3. Guardar los cambios a XMLSS.asp y, a continuación, inicie Windows Internet Explorer.
  4. Vaya a http://YourWebServer/XMLSS.asp. La hoja de cálculo XML se representa en Microsoft Excel alojado in situ en el explorador.

Referencias

Para obtener más información, visite el tema de Office Web Components en el siguiente sitio Web de Microsoft:
http://support.microsoft.com/ofd
Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
285891Cómo utilizar Visual Basic o ASP para crear una hoja de cálculo XML para Excel 2002 y Excel 2003
278976Cómo utilizar XSL para transformar la hoja de cálculo XML de Excel para usarla de lado del servidor
257757Consideraciones para la automatización del lado del servidor de Office

Propiedades

Id. de artículo: 288130 - Última revisión: lunes, 14 de mayo de 2007 - Versión: 5.2
La información de este artículo se refiere a:
  • Microsoft Office 2003 Web Components
  • Microsoft Office XP Web Components
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Active Server Pages 4.0
Palabras clave: 
kbmt kbhowto kbofficewebspread KB288130 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 288130

Enviar comentarios

 

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