Comment transférer des données XML vers Microsoft Excel 2002 ou Microsoft Excel 2003 à l'aide de Visual C#

Traductions disponibles Traductions disponibles
Numéro d'article: 307029 - Voir les produits auxquels s'applique cet article
Pour une version de Microsoft Visual Basic .NET de cet article, voir 307021.
Agrandir tout | Réduire tout

Sommaire

Résumé

Excel 2002 propose des fonctionnalités de l'ouverture des fichiers au format XML (Extensible Markup Language). Un fichier XML qui est bien formé peut être ouvert directement dans Excel 2002 ou Excel 2003 en utilisant l'interface utilisateur ou du code.

Avec Visual C# 2005 ou Visual C# .NET, vous pouvez tirer parti des fonctionnalités XML d'Excel pour transférer en toute transparence des données vers un classeur pour présenter les données de mise en forme et l'une organisation de votre choix. Cet article explique comment effectuer cette tâche.

Générer XML à partir d'un DataSet pour les utiliser dans Excel 2002 ou Excel 2003

Cette section illustre comment créer un objet DataSet et exporter les données qu'il contient vers un fichier XML à l'aide de la méthode WriteXML . Le fichier XML qui est généré peut être ouvert directement dans Excel. À des fins d'illustration, l'objet DataSet est créé de l'exemple de base de données Microsoft Access Les Comptoirs en utilisant le fournisseur OLEDB Jet. Toutefois, un code similaire fonctionne avec n'importe quel objet DataSet que vous créez avec Visual C# 2005 ou Visual C# .NET.
  1. Démarrez Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET. Dans le menu Fichier , cliquez sur Nouveau , puis cliquez sur Project . Sélectionnez application Windows dans les types de projets Visual C#. Form1 est créé par défaut.
  2. Dans le menu Affichage , sélectionnez boîte à outils pour afficher la boîte à outils et ajouter un bouton à Form1.
  3. Double-cliquez sur Button1 . La fenêtre de code pour le formulaire s'affiche.
  4. Au début de Form1.cs, ajoutez les directives suivantes à l'aide :
    using System.Data.OleDb;
    using System.Xml;
    					
  5. Ajoutez la variable membre privée suivante à la classe Form1 :
    private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    	+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
    	+ "Northwind.mdb;";
    					
    Remarque vous devrez peut-être modifier le chemin à Comptoir.mdb dans la chaîne de connexion correspondant à votre installation.
  6. Ajoutez le code suivant au gestionnaire de Button1_Click : //Connect
    //Connect to the data source.
             OleDbConnection objConn = new OleDbConnection (strConn);
             try
             {
                objConn.Open();			
    
                //Fill a dataset with records from the Customers table.
                OleDbCommand objCmd = new OleDbCommand(
                   "Select CustomerID, CompanyName, ContactName, " 
                   + "Country, Phone from Customers", objConn);
                OleDbDataAdapter objAdapter = new OleDbDataAdapter();
                objAdapter.SelectCommand = objCmd;
                DataSet objDataset = new DataSet();
                objAdapter.Fill(objDataset);
    
    
                //Create the FileStream to write with.
                System.IO.FileStream fs = new System.IO.FileStream(
                   "C:\\Customers.xml", System.IO.FileMode.Create);
    
                //Create an XmlTextWriter for the FileStream.
                System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
                   fs, System.Text.Encoding.Unicode);
    
                //Add processing instructions to the beginning of the XML file, one 
                //of which indicates a style sheet.
                xtw.WriteProcessingInstruction("xml", "version='1.0'");
                //xtw.WriteProcessingInstruction("xml-stylesheet", 
                  // "type='text/xsl' href='customers.xsl'");
    
                //Write the XML from the dataset to the file.
                objDataset.WriteXml(xtw);
                xtw.Close();
    
                //Close the database connection.
                objConn.Close();
             }
             catch (System.Exception ex)
             {
                MessageBox.Show(ex.Message);
             } 
    					
    objConn.Close();} catch (System.Exception ex) {MessageBox.Show(ex.Message);} Remarque vous devez modifier le code dans Visual Studio 2005. Par défaut, Visual C# ajoute un formulaire au projet lorsque vous créez un projet Windows Forms. Le formulaire est nommé Form1. Les deux fichiers qui représentent le formulaire sont nommés Form1.cs et Form1.Designer.cs. Vous écrivez le code dans Form1.cs. Le fichier Form1.Designer.cs est où le Concepteur Windows Forms écrit le code qui implémente toutes les actions que vous effectué par glisser-déplacer les contrôles à partir de la boîte à outils.

    Pour plus d'informations sur le concepteur de formulaires Windows de Visual C# 2005, reportez-vous au développeur de Microsoft suivant site Web de Network (MSDN) :
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx
  7. Appuyez sur F5 pour générer et exécuter le programme.
  8. Cliquez sur Button1 pour créer le fichier XML, puis fermez Form1 pour terminer le programme.
  9. Démarrez Excel 2002 ou Excel 2003 et ouvrez le fichier de sortie C:\Customers.xml.
  10. Une fois que vous avez observées comment le code XML a été analysée en lignes et colonnes dans le nouveau classeur, fermez le fichier et quittez Excel.

Mettre en forme les données XML à l'aide d'une feuille de style

Cette étape vous indique comment utiliser une feuille de style XSL (pour transformer le mode de mise en forme et d'organisées dans un classeur Excel des données XML.
  1. Using any HTML editor or a text editor (such as Notepad.exe), save the following XSL as C:\Customers.xsl:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <HTML>
          <HEAD>
            <STYLE>   
              .HDR { background-color:bisque;font-weight:bold }
            </STYLE>
          </HEAD>
          <BODY>
            <TABLE>
              <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <TD CLASS="HDR">Customer ID</TD>
              <TD CLASS="HDR">Company</TD>
              <TD CLASS="HDR">Contact</TD>
              <TD CLASS="HDR">Country</TD>
              <TD CLASS="HDR">Phone</TD>
              <xsl:for-each select="NewDataSet/Table">
                <TR>
                  <TD><xsl:value-of select="CustomerID"/></TD>
                  <TD><xsl:value-of select="CompanyName"/></TD>
                  <TD><xsl:value-of select="ContactName"/></TD>
                  <TD><xsl:value-of select="Country"/></TD>
                  <TD><xsl:value-of select="Phone"/></TD>
                </TR>
              </xsl:for-each>
            </TABLE>
          </BODY>
        </HTML>
      </xsl:template>
    </xsl:stylesheet> 
    					
  2. Retirez commentaires de la ligne de code dans le gestionnaire button1_Click suivante :
    xtw.WriteProcessingInstruction("xml-stylesheet", 
    	"type='text/xsl' href='customers.xsl'");
    					
    cette ligne de code écrit une instruction de traitement dans le fichier XML que Excel utilise pour localiser la feuille de style (Customers.xsl).

  3. Appuyez sur F5 pour générer et exécuter le programme.
  4. Cliquez sur Button1 pour créer le fichier XML, puis fermez Form1 pour terminer le programme.
  5. Démarrez Excel 2002 ou Excel 2003 et ouvrez le fichier de sortie C:\Customers.xml.
  6. Étant donné que Excel voit l'instruction de traitement de la feuille de style dans le fichier XML, vous une confirmation boîte de dialogue case lorsque vous ouvrez le fichier est. Dans la boîte de dialogue Importer au format XML , sélectionnez Ouvrir le fichier de la feuille de style suivant appliqué . Dans la liste, sélectionnez Customers.xsl puis cliquez sur OK . Notez que les données XML sont mise en forme et que les colonnes ont été organisées conformément à la feuille de style.
  7. Fermez le fichier et fermez Excel.

Utiliser code pour ouvrir le code XML transformé

Haut à ce stade, vous avez ouvert le fichier XML en utilisant l'interface utilisateur dans Excel. Cette section explique comment automatiser Excel pour ouvrir le classeur par programmation. L'exemple suivant montre comment ouvrir le code XML transformé sans intervention de l'utilisateur à la première transformation le XML dans l'objet DataSet au format HTML.
  1. Ajouter une référence à la bibliothèque d'objets de Microsoft Excel 10.0 ou Microsoft Excel 11.0 Object bibliothèque . Pour ce faire, procédez comme suit :
    1. Dans le menu projet , cliquez sur Ajouter une référence .
    2. Dans l'onglet COM , recherchez bibliothèque d'objets Microsoft Excel 10.0 ou la bibliothèque d'objets Microsoft Excel 11.0 puis cliquez sur Sélectionner .
    3. Cliquer sur OK dans la boîte de dialogue Ajouter une référence pour accepter les votre sélection. Si vous recevez une invite pour générer des wrappers pour la bibliothèque que vous avez sélectionné, cliquez sur Oui .
  2. Au début de Form1.cs, ajoutez les directives suivantes à l'aide :
    using Excel = Microsoft.Office.Interop.Excel;
    					
  3. Dans le projet Visual C# 2005 ou Visual C# .NET, ajoutez un autre bouton à Form1.
  4. Double-cliquez sur button2 . Lorsque la fenêtre de code pour le formulaire s'affiche, ajoutez le code suivant au gestionnaire button2_Click de : //Connect
    //Connect to the data source.
    OleDbConnection objConn = new OleDbConnection (strConn);
    objConn.Open();			
    
    //Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    	"Select CustomerID, CompanyName, ContactName, " 
    	+ "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);
    
    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    	"C:\\Customers.htm", System.IO.FileMode.Create);
    
    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    	fs, System.Text.Encoding.Unicode);
    
    //Transform the XML using the stylesheet.
    XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
    System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
    xslTran.Load("C:\\Customers.xsl");
    xslTran.Transform(xmlDoc, null, xtw);
    
    //Open the HTML file in Excel.
    Excel.Application oExcel = new Excel.Application();
    oExcel.Visible=true;
    oExcel.UserControl=true;
    Excel.Workbooks oBooks = oExcel.Workbooks;
    object oOpt = System.Reflection.Missing.Value; //for optional arguments
    oBooks.Open("c:\\customers.htm", oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt);
    
    					
    Excel.Application oExcel = nouveau Excel.Application() oExcel.Visible=true oExcel.UserControl=true ; Excel.Workbooks oBooks = oExcel.Workbooks ; objet oOpt = System.Reflection.Missing.Value ; //for arguments facultatifs oBooks.Open (« c:\\customers.htm », oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt) ;
  5. Appuyez sur F5 pour générer et exécuter le programme.
  6. Cliquez sur button2 pour ouvrir le code XML transformé dans Excel.
note Tandis que la Excel 2002 et Excel 2003 Object Model expose une méthode XML ouvert qui vous permet d'ouvrir par programmation un fichier XML avec les feuilles de style appliqué, l'exemple précédent n'appelle pas cette méthode en raison d'un problème connu avec cette méthode à partir d'un client Automation. La méthode OpenXML fonctionne comme prévu lorsqu'elle est appelée à partir d'une macro Excel ; toutefois, lorsque cette méthode est appelée à partir d'un client Automation, le paramètre StyleSheet est ignoré. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
307230 BOGUE : paramètre StyleSheets de la méthode OpenXML ignoré lors de l'automatisation Excel 2002

Références

Pour plus d'informations, voir les articles suivants de la base de connaissances :
288215 INFO : Microsoft Excel 2002 et XML
302084 Comment faire pour automatiser Microsoft Excel à partir de Visual C# .NET
301216 Comment faire pour remplir un objet DataSet à partir d'une base de données à l'aide de Visual Basic .NET
306023 Comment faire pour transférer des données vers un classeur Excel à l'aide de Visual C# .NET

Propriétés

Numéro d'article: 307029 - Dernière mise à jour: lundi 11 décembre 2006 - Version: 7.5
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft ADO.NET 1.0
  • Microsoft Excel 2002
  • Microsoft Office Excel 2003
Mots-clés : 
kbmt kbhowtomaster KB307029 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 307029
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