IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez .NET Discussion :

[ADO.Net][Excell]Enregistrer DataTable en .xls grâce au Xml [Sources]


Sujet :

Contribuez .NET

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 92
    Points
    92
    Par défaut [ADO.Net][Excell]Enregistrer DataTable en .xls grâce au Xml
    Voilà, je ne sais pas si je suis au bon endroit, mais au lieu d'écrire un problème j'écris une solution que je pense la bienvenue.

    c'est à dire transformer une DataTable en fichier xls.

    j'ai beaucoup galéré avant de trouver un truc tout bête, passer par du XML.

    c'est à dire : il faut d'abord écrire le fichier xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?xml version='1.0'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <HTML>
          <BODY>
               <table border="1" padding="0" border-spacing="0">
    		<tr>
    			  <xsl:for-each select="DataSet/DataTable[position()=1]/*">
    				<th>
    					<xsl:value-of select="name()" />
    				</th>
    				</xsl:for-each>
    		</tr>
              <xsl:for-each select="DataSet/DataTable">
     
    		<tr>
    			<xsl:for-each select="*">
    				<td>
    		              <xsl:value-of select="."/>
    				</td>
    			</xsl:for-each>
    		</tr>
     
              </xsl:for-each>
    	</table>
          </BODY>
        </HTML>
      </xsl:template>
    </xsl:stylesheet>
    et ensuite il faut juste générer la DataTable en xml en lui appliquant le fichier xsl et en rennomant le XML en XLS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    /// <summary>
            /// Transforme une DataTable en fichier xls. Le fichier xsl doit être : ../Format.xsl
            /// </summary>
            /// <param name="DT">DataTable à exporter.</param>
            /// <param name="Path">Chemin de la sauvegarde.</param>
            /// <returns></returns>
            static public void DataTableToExcel(DataTable DT, string Path)
            {
                DT.TableName = "DataTable";
                DataSet Ds = new DataSet();
                Ds.DataSetName = "DataSet";
                Ds.Tables.Add(DT);
     
                System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(Path, System.Text.Encoding.Unicode);
                xtw.WriteProcessingInstruction("xml", "version='1.0'");
                xtw.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='../Format.xsl'");
                Ds.WriteXml(xtw);
            }
    on peut à priori faire pareil en pdf, il faut juste lui appliqué du xsl-fo au lieu du xslt.

    Mais je n'ai pas encore essayé!

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Nous te remercions pour ta contribution
    voir ici également http://www.developpez.net/forums/viewtopic.php?t=284869
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

Discussions similaires

  1. table vers excel "enregistrer sous" date.xls
    Par zougna dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/07/2007, 09h50
  2. [ADO.NET] Dataset et DataTable
    Par gibea00 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 15/12/2006, 04h49
  3. [ADO.NET][VB.Net]Comment réaliser jointure de 2 DataTables ?
    Par prophetky dans le forum Accès aux données
    Réponses: 5
    Dernier message: 17/02/2006, 14h55
  4. [ADO.Net][VB.NET/C#]Comment importer .xls dans DataSet ?
    Par smedini dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/01/2006, 15h59
  5. [ADO.Net][VB.NET] Comment ajouter une colonne Integer à un DataTable ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/04/2005, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo