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();
		}