Message d'erreur

Signaler
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007
-
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008
-
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

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007

je dois donc supprimer la deuxieme colonne?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
supprime la ligne                     dr["i1"] = int.Parse(vals[1]);

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
et modifie la ligne dr["User"] = vals[2]; en
dr["User"] = vals[1];

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007

' 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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
es-tu sur d'avoir toujours des chiffres dans la première colonne ?

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007

oui j' ai toujours des chiffres dans la première colonne.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
essaye de mettre un try/catch autours de tes instructions

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007

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();
        }
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
28
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
17 septembre 2007

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
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Est-ce qu'il n'y aurait pas un espace devant tes nombres à chaque ligne ou alors des lignes qui seraient vides ?