Comment faire pour utiliser ASP pour créer une feuille de calcul XML à afficher côté client

Traductions disponibles Traductions disponibles
Numéro d'article: 288130 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Résumé

Cet article fournit un script ASP (Active Server Pages) qui permet de créer une feuille de calcul au format XMLSS (XML Spreadsheet) à l'aide du composant Office Spreadsheet. La feuille de calcul XML peut être affichée côté client de plusieurs manières :
  • dans le composant Spreadsheet sur une page Web ;
  • dans Microsoft Excel, sur place dans le navigateur ;
  • directement dans Microsoft Excel.

Plus d'informations

L'utilisation du composant Spreadsheet dans le code côté serveur pour créer des feuilles de calcul offre une évolutivité supérieure et des performances accrues par rapport à l'automatisation côté serveur de Microsoft Excel. Microsoft recommande de ne pas utiliser l'automatisation des applications Office, notamment Excel, sur le serveur. Il convient également de ne pas utiliser l'automatisation lorsque d'autres solutions aboutissant aux mêmes résultats s'offrent à vous. Une feuille de calcul XML peut conserver de nombreuses fonctionnalités communes au composant Spreadsheet et à Microsoft Excel, parmi lesquelles les classeurs à plusieurs feuilles, la mise en forme des cellules, le filtre automatique, les formules de cellules et le recalcul. Le modèle objet du composant Spreadsheet ressemble étroitement à celui de Microsoft Excel. Par conséquent, si vous êtes familier avec le modèle objet Excel, vous pouvez facilement appliquer une partie de votre code Excel existant, en lui apportant quelques modifications, pour l'utiliser avec le composant Spreadsheet.

L'exemple suivant montre comment générer un classeur à plusieurs feuilles au format XMLSS à l'aide du composant Spreadsheet avec un script ASP. Il montre aussi comment afficher côté client la feuille de calcul XML résultante sur une page Web ou dans Microsoft Excel.

Script ASP permettant de créer une feuille de calcul XML à l'aide du composant Spreadsheet

Enregistrez le script ASP suivant en tant que XMLSS.asp dans le répertoire racine virtuel de votre serveur Web (le répertoire racine par défaut est 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

%>
				

Affichage de la feuille de calcul XML sur une page Web

Pour afficher l'exemple de feuille de calcul XML sur une page Web, il vous suffit de définir la propriété XMLURL pour un composant Spreadsheet avec l'adresse URL du script ASP, comme suit :
<html>

<body>

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

</body>

</html>
				

Remarque : si vous utilisez Office 2003, vous devrez peut-être modifier l'identificateur classid dans le code ci-dessus comme il convient.

Dans le code HTML précédent, la propriété XMLURL est définie à l'aide d'une balise <param>. Vous pouvez aussi définir la propriété XMLURL au moment de l'exécution le cas échéant :
   Spreadsheet1.XMLURL = "http://YourWebServer/xmlss.asp"
				

Affichage de la feuille de calcul XML dans Microsoft Excel

Vous pouvez ouvrir la feuille de calcul XML créée avec le composant Spreadsheet dans Microsoft Excel. La mise en forme et les fonctionnalités que vous implémentez dans le composant Spreadsheet peuvent être partagées avec Microsoft Excel. Certaines fonctionnalités qui sont prises en charge par le composant Spreadsheet ne le sont pas par Excel, et réciproquement ; les balises ou les attributs XML qui ne sont pas implémentés par Excel sont ignorés lorsque la feuille de calcul XML est ouverte.

Pour afficher les résultats de l'exemple de script ASP dans Microsoft Excel, procédez comme suit :
  1. Démarrez Microsoft Excel.
  2. Dans le menu Fichier, cliquez sur Ouvrir.
  3. Dans la zone Nom de fichier, tapez http://votre_serveur_web/xmlss.asp, puis cliquez sur Ouvrir.
Examinez le classeur. Notez que les données et les formats qui ont été appliqués au moment de l'exécution sont tous présents dans le classeur lorsqu'il est ouvert dans Excel. Il existe cependant une exception : les légendes des en-têtes qui sont créées dans le composant Spreadsheet ne sont pas reportées dans Excel, car il s'agit d'une fonctionnalité du composant Spreadsheet qui n'est pas prise en charge par Microsoft Excel. Si vous créez une feuille de calcul XML avec le composant Spreadsheet dans l'intention d'afficher le fichier dans Excel, tenez compte des différentes fonctionnalités qui sont prises en charge par chacun.

Un autre moyen d'ouvrir la feuille de calcul XML créée avec le script ASP dans Microsoft Excel consiste à fournir le type MIME (Multipurpose Internet Mail Extensions) Excel en tant que ContentType dans votre script ASP. Lorsque vous utilisez le type MIME Excel et que vous accédez à votre script ASP, la feuille de calcul XML peut être rendue dans Microsoft Excel sur place dans le navigateur. Pour cela, procédez comme suit :
  1. Ouvrez XMLSS.asp dans un éditeur de texte.
  2. Remplacez la ligne suivante dans le script :
    Response.ContentType = "text/xml"
    					
    par :
    Response.ContentType = "application/vnd.ms-excel"
    					
  3. Enregistrez vos modifications dans XMLSS.asp et démarrez Internet Explorer.
  4. Accédez à http://votre_serveur_web/XMLSS.asp. La feuille de calcul XML est rendue dans Microsoft Excel qui est hébergé sur place dans le navigateur.

Références

Pour plus d'informations, reportez-vous à la rubrique Composants Web Office sur le site Web de Microsoft à l'adresse suivante :
http://support.microsoft.com/ofd
Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
285891 Comment faire pour utiliser Visual Basic ou ASP pour créer une feuille de calcul XML pour Excel 2002
278976 Comment faire pour utiliser XSL pour transformer une feuille de calcul XML Excel pour une utilisation côté serveur
257757 INFO : Éléments à prendre en compte pour l'automatisation côté serveur de Microsoft Office

Propriétés

Numéro d'article: 288130 - Dernière mise à jour: vendredi 21 juillet 2006 - Version: 6.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Composants Web Microsoft Office
  • Composants Web Microsoft Office
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002
  • Microsoft Active Server Pages 4.0
Mots-clés : 
kbhowto kbofficewebspread KB288130
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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