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

C# Discussion :

Problème affichage fichier csv après execution d'un code C# qui lit ce fichier csv [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut Problème affichage fichier csv après execution d'un code C# qui lit ce fichier csv
    Bonjour,

    (J'utilise excel 2007 pour générer les fichiers csv)

    Je dois développer une application en C# qui doit importer des fichier (format csv) puis les lire.

    j'ai un bouton pour effectuer le traitement de lecture du fichier importé.

    pour la lecture j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    StreamReader csv_file = File.OpenText("path_csv_file"); 
                              while (csv_file.Peek() >= 0)
                                    {
                                        string ligne = csv_file.ReadLine(); 
     
                                        // ici je fais un traitement lourd .....
                                     }

    le traitement passe bien mais mon problème est que je n'arrive pas à récupérer correctement mon fichier csv après l’achèvement de l’exécution,
    A la place des espaces et sauts de ligne je trouve des ";" et c'est pareille pour tout les fichiers .csv qui existent sur mon PC. c'est comme si mon code a changer l'encodage de mes fichiers csv.
    je vois pas ou se trouve le problème, est ce que c'est le mode de lecture qui change l'encodage de mes fichiers csv. ? comment remédier svp ?

    NA: pour retrouver l'affichage correcte de mes fichier csv il faut redemander mon PC, mais une fois exécuter le code le problème persiste encore !!

  2. #2
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Il ressemble à quoi ton fichier cvs à l'origine ?
    Car avoir le séparateur ";" pour les colonnes ne me choque pas.
    Tu peux mettre un exemple tiré d'un fichier csv que tu as, avant et après.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Ton fichier est en quel encodage à l'origine? Je crois que .Net ouvre les fichiers en UTF8 par défaut (à valider).

    Je ne suis pas sur de bien comprendre, après que ton programme a fini de "parser" le fichier, celui-ci est modifié? Le fichier d'origine est modifié? Parce qu'un StreamReader c'est en lecture seule.

  4. #4
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Citation Envoyé par zakaros Voir le message
    Bonjour,
    NA: pour retrouver l'affichage correcte de mes fichier csv il faut redemander mon PC, mais une fois exécuter le code le problème persiste encore !!
    Je trouve çà louche quand même, ton programme ouvre tous les fichiers csv ??? Et même si ils sont enregistré, ca ne change pas avec un reboot.

    Tu fais une écriture à un moment ?
    Tu peux poster ton code complet ?
    Et à l'ouverture tu peux choisir l'encodage à utiliser, il faut vérifier quel est l'encodage du fichier, mais des fichier créé sous windows et lu sous windows, ça doit être de l'ANSI j'imagine.
    Je pense que le programme prend l'encodage par défaut du système, vérifier cela dit.

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Bonjour tout le monde merci pour vos réponses, voici un exemple de fichier .csv avant exécution de programme:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ceci est un exemple de ligne dans mes fichier .csv				
    ceci est un exemple de ligne dans mes fichier .csv				
     
     
    	ceci est un exemple de ligne dans mes fichier .csv			
     
    				ceci est un exemple de ligne dans mes fichier .csv
    				ceci est un exemple de ligne dans mes fichier .csv
     
    				ceci est un exemple de ligne dans mes fichier .csv
    				ceci est un exemple de ligne dans mes fichier .csv
    et après exécution de programme j'aurais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ceci est un exemple de ligne dans mes fichier .csv;;;;
    ceci est un exemple de ligne dans mes fichier .csv;;;;
    ;;;;
    ;;;;
    ;ceci est un exemple de ligne dans mes fichier .csv;;;
    ;;;;
    ;;;;ceci est un exemple de ligne dans mes fichier .csv
    ;;;;ceci est un exemple de ligne dans mes fichier .csv
    ;;;;
    ;;;;ceci est un exemple de ligne dans mes fichier .csv
    ;;;;ceci est un exemple de ligne dans mes fichier .csv
    Vous voyez a la place des espaces et sauts de ligne il y a des ";" , en plus toutes les lignes commencent au début (i.e premier colonne !) .
    Dans mon programme j'utilise seulement StreamReader, je fais jamais d'écriture.

  6. #6
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Ok donc tu as en entré un fichier CSV avec des tabulations comme séparateur et en sortie le même fichier CSV avec des ";" comme séparateur.

    Par contre d'après le bout de code que tu nous a fournis il est impossible que ton fichier soit modifié, c'est quoi ton traitement lourd que tu indique ?

    Et tu n'as pas répondu à toutes les questions :

    - ton programme ouvre tous les fichiers csv ???
    - Tu peux poster ton code complet ?

    Si je comprend bien, ton fichier n'est ouvert dans aucun éditeur, tu lance ton programme, tu ouvre ton fichier, et il est modifié, ensuite, tu fais un reboot et il revient à la normal ?
    A ce niveau là, c'est plus un exorciste qu'il te faut !!

    Test un truc, ouvre ton fichier dans Excel, lance ton programme, si mes souvenirs sont bon Excel verrouille le fichier en écriture. Si tu essaye d'écrire dedans, ton programme devrait planter.
    Cela dit c'est simple de vérifier si Excel le verrouille, tu l'ouvre dans Excel et t'essaye de le modifier dans notepad et d'enregistrer.

    Par contre en écrivant il me vient un doute, çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ceci est un exemple de ligne dans mes fichier .csv				
    ceci est un exemple de ligne dans mes fichier .csv				
     
     
    	ceci est un exemple de ligne dans mes fichier .csv			
     
    				ceci est un exemple de ligne dans mes fichier .csv
    				ceci est un exemple de ligne dans mes fichier .csv
     
    				ceci est un exemple de ligne dans mes fichier .csv
    				ceci est un exemple de ligne dans mes fichier .csv
    C'est ton rendu dans quoi comme logiciel ? Notepad ? Ou Excel ? Désolé pour la question bête mais je cherche et mes bases en magie noire sont un peu rouillé ^^

  7. #7
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Resalut Jabbal'H voici mon code:


    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
                                StreamReader _scenario_file = new StreamReader(scenario_file, System.Text.Encoding.Default);
                                while (_scenario_file.Peek() >= 0)
                                {
                                    string ligne = _scenario_file.ReadLine();
                                    str = (string)ligne.ToString().Trim('\"');
     
                                    if (str != null)
                                    {
                                        if (str.Contains("imultaneously"))
                                        {
                                            simultaneously++;
                                        }
     
                                        if (str.Contains("verify"))
                                        {
     
                                            string exg_verify_modify = str.Replace(" ", "");
                                            exg_verify_modify = exg_verify_modify.Replace(";", "");
                                            exg_verify_modify = exg_verify_modify.Replace("verify:[", "");
                                            exg_verify_modify = exg_verify_modify.Replace("]", "");
                                            if (exg_verify_modify.Contains("-TC"))
                                            {
                                                exg_verify_modify = exg_verify_modify.Replace("-TC", ";TC");
                                                ArrayList Array_exg_verify_modify = new ArrayList();
                                                Array_exg_verify_modify.AddRange(exg_verify_modify.Split(';'));
     
                                                for (int s = 0; s < Array_exg_verify_modify.Count; s++)
                                                {
                                                    if (Array_exg_verify_modify[s].ToString() != "" && Array_exg_verify_modify[s].ToString() != null)
                                                        Feuille_Test_sequence_design_i[p].Add_element_List_Test_verify_design(Array_exg_verify_modify[s].ToString(), simultaneously);
                                                }
     
                                                Feuille_Test_sequence_design_i[p].Add_nom_feuille_design(scenario_file_Name.ToString().Replace(" ", ""));
     
                                            }
                                            else
                                            {
                                                Feuille_Test_sequence_design_i[p].Add_element_List_Test_verify_design(exg_verify_modify, simultaneously);
                                                Feuille_Test_sequence_design_i[p].Add_nom_feuille_design(scenario_file_Name.ToString().Replace(" ", ""));
                                            }
                                        }
                                        else if (str.Contains("TC_"))
                                        {
                                            string exg_sequence_modify = str.Replace(" ", "");
                                            exg_sequence_modify = exg_sequence_modify.Replace(";;", "");
     
                                            if (exg_sequence_modify.Contains("sequence:"))
                                            {
                                                exg_sequence_modify = exg_sequence_modify.Replace("sequence:", "");
                                            }
                                            if (exg_sequence_modify.Contains("%"))
                                            {
                                                exg_sequence_modify = exg_sequence_modify.Replace("%", "");
                                            }
                                            if (exg_sequence_modify.Contains(";"))
                                            {
                                                ArrayList Array_exg_sequence_modify = new ArrayList();
                                                Array_exg_sequence_modify.AddRange(exg_sequence_modify.Split((';'), ('"')));// ici il faut supprimer les element vides dans le tableau
     
                                                for (int s = 0; s < Array_exg_sequence_modify.Count; s++)
                                                {
                                                    if (Array_exg_sequence_modify[s].ToString() != "" && Array_exg_sequence_modify[s].ToString() != null)
                                                        Feuille_Test_sequence_design_i[p].Add_element_List_Test_sequence_design(Array_exg_sequence_modify[s].ToString(), simultaneously);
                                                    toolStripStatusLabel1.Text = "Chargement des fichiers svtci " + Array_exg_sequence_modify[s].ToString() + "  en cours..."; //statusStrip1.Refresh();
     
                                                }
                                                Feuille_Test_sequence_design_i[p].Add_nom_feuille_design(scenario_file_Name.ToString().Replace(" ", ""));
                                            }
                                            else
                                            {
                                                List_sequence.Add(exg_sequence_modify); Feuille_sequence_verify.Add(scenario_file_Name.ToString().Trim()); Simultaneously_sequence.Add(simultaneously);
                                                Feuille_Test_sequence_design_i[p].Add_element_List_Test_sequence_design(exg_sequence_modify, simultaneously);
                                                Feuille_Test_sequence_design_i[p].Add_nom_feuille_design(scenario_file_Name.ToString().Replace(" ", ""));
                                            }
                                        }
                                    }
     
                                } _scenario_file.Close();


    1) mon programme ouvre tous les fichiers csv.
    2) j'utilise Excel (mais je trouve que le fichier est modifié même si je l'ouvre sur Notepad)
    3) le programme plante (exception) si le fichier est ouvert, il faut le fermer avant de lancer le programme : Exception générée :
    "Le processus ne peut pas accéder au fichier 'C:\Documents and Settings\zakaria\Bureau\csv_file.csv', car il est en cours d'utilisation par un autre processus."

  8. #8
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Avant le traitement qd ton fichier est bien, quel rendu tu as avec notepad ? Avant de le réouvrir des excel ?
    Si ce n est pas confidentiel, tu peux mettre ton fichier csv en pièce jointe ?
    Tu n'as aucun autre traitement à part celui là ?

    Et c est quoi la variable "p" ?
    Et la variable "Feuille_Test_sequence_design_i" ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quel est le programme qui lit mon fichier de config
    Par ikuzar dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 31/08/2010, 09h44
  2. Réponses: 4
    Dernier message: 11/01/2010, 21h51
  3. [PHP 5.0] Créer un fichier HTML aprés execution de la page PHP
    Par johnson95 dans le forum Langage
    Réponses: 10
    Dernier message: 20/12/2008, 12h01
  4. problème sur la feuille après execution de la macro
    Par vacknov dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2007, 08h16
  5. Réponses: 2
    Dernier message: 14/05/2006, 19h36

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