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

Le support d'Office 2003 a pris fin

Microsoft a mis fin au support d'Office 2003 le 8 avril 2014. Cette modification a affecté vos mises à jour logicielles et options de sécurité. Découvrez les implications de ce changement à votre niveau et la marche à suivre pour rester protégé.

Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
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.EndFunction 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 = aOrderInfoEnd FunctionFunction GetProductIDs()    ReDim aPIDs(NumProds, 1)    For r = 0 To NumProds-1        aPIDs(r, 0) = r+1    Next    GetProductIDs = aPIDsEnd 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 : 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

ID d'article : 288130 - Dernière mise à jour : 07/21/2006 11:02:00 - Révision : 6.0

Composants Web Microsoft Office, Composants Web Microsoft Office, Microsoft Office Excel 2003, Microsoft Excel 2002, Microsoft Active Server Pages 4.0

  • kbhowto kbofficewebspread KB288130
Commentaires