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 :
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
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>
on peut à priori faire pareil en pdf, il faut juste lui appliqué du xsl-fo au lieu du xslt.
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); }
Mais je n'ai pas encore essayé!
Partager