Bonjour,

Contexte : Visual Studio 2010, ASPNET, C#, Base SQL, FrameWork 3.5

je génére un fichier CSV à partir d'une DataTable et je l'envois par Email à l'utilisateur qui le demande. L'objectif est qu'il récupére les données avec Excel.

ça marche bien sauf que dans Excel , toutes les accents sont remplaçés par des caractéres du genre : é


Avec mes recherches j'ai appris que c'est un problème d'encodage mais je n'ai pas trouvé de solution qui marche ....

QQN aurait t'il la solution ?


voici ma fonction :


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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
 
     public void ExporterUneDataTableEnCsv(DataTable LaTable, string Titre, string Chemin, string Email)
 
        {
            string LaLigne = string.Empty;
            string Route = Chemin + "Export.csv";
 
            StreamWriter SW = new StreamWriter(@Route);
 
            LaLigne = Titre;
            SW.WriteLine(LaLigne, System.Text.Encoding.Default);
 
            LaLigne = "Fichier généré via le site intranet de l'ATASH le : " + DateTime.Now.ToString();
            SW.WriteLine(LaLigne);
 
            LaLigne = " ";
            SW.WriteLine(LaLigne);
            LaLigne = string.Empty;
 
            //ENTETES DE COLONNES
            foreach (DataColumn Col in LaTable.Columns)
            {
                LaLigne = LaLigne + Col.Caption.ToString() + ";";
            }
 
 
            SW.WriteLine(LaLigne);
            LaLigne = string.Empty;
 
            //GENERATION DES LIGNES DE DONNEES
            foreach (DataRow Lgn in LaTable.Rows)
            {
 
                foreach (DataColumn Col in LaTable.Columns) 
                {
                    LaLigne = LaLigne + Lgn[Col.ColumnName].ToString() + ";";
                }
                SW.WriteLine(LaLigne);
                LaLigne = string.Empty;
            }
 
 
            SW.Close();
            SW.Dispose();
 
            //ENVOIS FICHIER EN PIECE JOINTE A L'UTILISATEUR EN COURS
            Emails Courrier = new Emails();
 
            //string Sujet = DateTime.Now + " - Export données intranet";
            string Sujet = DateTime.Now + " - " + Titre;
            string Message = "Email généré à votre demande par l'Intranet ATASH</BR>Voir le fichier CSV en pièce jointe";
            Courrier.EnvoisMail(Email, Sujet, Message, Route);
 
            Courrier = null;
 
        }
    }
Merci d'avance pour vos réponses ...

Patrick