Message d'erreur

dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007 - 21 août 2007 à 10:34
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008 - 22 avril 2008 à 16:35
salut à tous,
j' ai ecrit un code qui devrait pouvoir lire mon fichier et le mettre dans un tableau mais je recois un message d' erreur.
mon fichier est un fichier CSV et ressemble à quelque chose de ce genre:
110;SG
111;FG
115;KL
.
.
.
je voudrais pour voir mettre les numéros dans une colonnes et les lettres dans une autre colonne.c' est à dire
110  SG
111  FG
115  KL
.
.
.
mais je recois un message d'erreur
qui me dit "String input was not in a correct format"
je ne sais pas comment changer ca
est ce que vous pourrez m' aider S'il vous plait?

voilà mon code (j'ai pris une partie sur ce site meme ):

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.IO.Compression;
using System.Collections.Generic;
using System.Text;

namespace fichier
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.DataGrid dataGrid1;
        private System.ComponentModel.Container components = null;
        public Form1()
        {
            InitializeComponent();
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code

        private void InitializeComponent()
        {
            this.dataGrid1 = new System.Windows.Forms.DataGrid();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
            this.SuspendLayout();

            this.dataGrid1.DataMember = "";
            this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid1.Location = new System.Drawing.Point(8, 40);
            this.dataGrid1.Name = "datgrid1";
            this.dataGrid1.Size = new System.Drawing.Size(400, 400);
            this.dataGrid1.TabIndex = 0;
            // Form1

            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(680, 425);
            //this.Controls.Add(this.textBox1);
            this.Controls.Add(this.dataGrid1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
            this.ResumeLayout(false);
        }

        #endregion

        // the main entry point for the application
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            // on crée une table
            DataTable dt = new DataTable("test");
            // on crée des colonnes
            dt.Columns.Add("TelephoneNumber", System.Type.GetType("System.Int32"));
            dt.Columns.Add("i1", System.Type.GetType("System.Int32"));
            dt.Columns.Add("User", System.Type.GetType("System.String"));
            //if (File.Exists(Application.StartupPath + "\\ Recordings.csv"))
            //{
                StreamReader fichier = File.OpenText("h:\\ExportTeilnehmer.CSV");
                while (fichier.Peek() != 0)
                {
                    // on lit une ligne et on ajoute
                    string ligne = fichier.ReadLine();
                    string[] vals = ligne.Split(';');
                    DataRow dr = dt.NewRow();
                    dr["TelephoneNumber"] = int.Parse(vals[0]);
                    dr["i1"] = int.Parse(vals[1]);
                    dr["User"] = vals[2];
                    // on ajoute la ligne
                    dt.Rows.Add(dr);
                    Console.ReadLine();
                }
                fichier.Close();
               
                // on genere le tableau
                dataGrid1.DataSource = dt;
                //dataGrid1.Refresh();

        }
    }
}

l' erreur s' affiche à ce niveau:
dr["TelephoneNumber"] = int.Parse(vals[0]);

                    dr["i1"] = int.Parse(vals[1]);

                    dr["User"] = vals[2];

merci pour votre aide

cordialement

14 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 10:39
si ton format est : 110;FG

c'est normal que ca ne fonctionne pas !

le block :
dr["TelephoneNumber"] = int.Parse(vals[0]);
                    dr["i1"] = int.Parse(vals[1]);
                    dr["User"] = vals[2];

attends quelque chose du genre :
110;230;FG

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007
21 août 2007 à 10:42
je dois donc supprimer la deuxieme colonne?
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 10:44
supprime la ligne                     dr["i1"] = int.Parse(vals[1]);

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 10:45
et modifie la ligne dr["User"] = vals[2]; en
dr["User"] = vals[1];

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007
21 août 2007 à 10:49
' ai enlever la 2eme colonne et je me retrouve donc avec quelque chose comme ca :
dr["TelephoneNumber"] = int.Parse(vals[0]);
                    dr["User"] = vals[1];

et la meme erreur  revient toujours et sur cette ligne :
dr["TelephoneNumber"] = int.Parse(vals[0]);

l' erreur est la suivante:
"Input String was not in a correct form"

que dois je faire?
cordialement
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 10:51
es-tu sur d'avoir toujours des chiffres dans la première colonne ?

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007
21 août 2007 à 10:56
oui j' ai toujours des chiffres dans la première colonne.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 10:59
essaye de mettre un try/catch autours de tes instructions

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007
21 août 2007 à 12:05
je l'ai fait et maintenant je recois un message de nullreferenceexception.
et en plus de ca mon tableau meme ne s' affiche plus

voila de nouveau mon code:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.IO.Compression;
using System.Collections.Generic;
using System.Text;

namespace fichier
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.DataGrid dataGrid1;
        private System.ComponentModel.Container components = null;
        public Form1()
        {
            InitializeComponent();
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code

        private void InitializeComponent()
        {
            this.dataGrid1 = new System.Windows.Forms.DataGrid();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
            this.SuspendLayout();

            this.dataGrid1.DataMember = "";
            this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid1.Location = new System.Drawing.Point(8, 40);
            this.dataGrid1.Name = "datgrid1";
            this.dataGrid1.Size = new System.Drawing.Size(400, 400);
            this.dataGrid1.TabIndex = 0;
            // Form1

            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(680, 425);
            //this.Controls.Add(this.textBox1);
            this.Controls.Add(this.dataGrid1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
            this.ResumeLayout(false);
        }

        #endregion

        // the main entry point for the application
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
             try
                {
            // on crée une table
            DataTable dt = new DataTable("test");
            // on crée des colonnes
            dt.Columns.Add("TelephoneNumber", System.Type.GetType("System.Int32"));
            dt.Columns.Add("i1", System.Type.GetType("System.Int32"));
            dt.Columns.Add("User", System.Type.GetType("System.String"));
            //if (File.Exists(Application.StartupPath + "\\ Recordings.csv"))
            //{
                StreamReader fichier = File.OpenText("h:\\ExportTeilnehmer.CSV");
                while (fichier.Peek() != 0)
                {
                    // on lit une ligne et on ajoute
                    string ligne = fichier.ReadLine();
                    string[] vals = ligne.Split(';');
                    DataRow dr = dt.NewRow();
                    dr["TelephoneNumber"] = int.Parse(vals[0]);
                    dr["i1"] = int.Parse(vals[1]);
                    dr["User"] = vals[2];
                    // on ajoute la ligne
                    dt.Rows.Add(dr);
                    Console.ReadLine();
                }
                fichier.Close();
               
                // on genere le tableau
                dataGrid1.DataSource = dt;
                //dataGrid1.Refresh();

}
    catch(Exception ex)
            {
        Console.WriteLine(ex.GetType().ToString());
        Console.ReadLine();
        }
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 13:38
bah ouiah...

un try/catch autour de 
                   dr["TelephoneNumber"] = int.Parse(vals[0]);
                    dr["User"] = vals[1];

aurait suffit

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007
21 août 2007 à 13:48
je l' ai fait et ca marche mais en m' affichant juste la premiere ligne de mon texte.
est ce qu' il y' aurait pas une autre commande que je devrais ajouter pour que ca m' affiche tout mon texte?

merci
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 14:02
ooops... petite erreur...


 


il faut mettre aussi la ligne dt.Rows.Add(dr); dans le try

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
dorine82 Messages postés 28 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 17 septembre 2007
21 août 2007 à 14:36
j' ai mis mais jusque là ca ne marche pas.
j' essaye encore de lire la doc pour voir ce que je dois ajouter dans mon prgramme

merci bcq pour votre aide

cordialement

dorine
0
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
22 avril 2008 à 16:35
Est-ce qu'il n'y aurait pas un espace devant tes nombres à chaque ligne ou alors des lignes qui seraient vides ?
0
Rejoignez-nous