Bonjour,
Je souhaite, en cliquant sur un bouton, générer un fichier csv, avec le contenu d'un datatable, que l'utilisateur pourra ouvrir ou enregistrer. J'utilise la fonction suivante qui marche sauf pour les lettres accentuées :-( J'ai essayé différents charset mais rien ne fait... j'ai toujours é pour é par exemple...
Si vous avez des idées, je suis preneuse car je commence sérieusement à désepérer!
Merci d'avance!
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
31
32
33
34
35
36 public static void ExportCSV(DataTable pDataTable) { HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ContentType = "text/csv"; HttpContext.Current.Response.Charset = "ISO-8859-1"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=exportCsv.csv"); StringBuilder sb = new StringBuilder(); //S'il y a des données if(pDataTable.Columns.Count != 0) { //Ligne d'entêtes foreach(DataColumn column in pDataTable.Columns) { sb.Append(column.ColumnName + ';'); } //Retour à la ligne sb.Append("\r\n"); //boucle sur les données foreach(DataRow row in pDataTable.Rows) { //parcours des colonnes foreach(DataColumn column in pDataTable.Columns) { sb.Append(row[column].ToString().Replace(Environment.NewLine,"[retour à la ligne]").Replace(";",",")+';'); } //Retour à la ligne sb.Append("\r\n"); } } HttpContext.Current.Response.Write(sb); HttpContext.Current.Response.End(); }
Partager