2017-08-24 5 views
-1

J'importe un fichier .txt dans un DataGridView, ce qui fonctionne assez décemment en ce moment.Chargement du texte Fichier dans datagrid et long nombre affiché incorrectement

Malheureusement, la seule et unique valeur importante ne s'affiche pas correctement.

La valeur (un numéro de suivi allemand) est la suivante: « 00340433914967320068 »

S'il vous plaît voir capture d'écran ci-joint (colonne F2) comment il est indiqué dans la grille de données. Toutes les autres valeurs fonctionnent comme charme.

encore plus longtemps ceux comme: "[x,xx] Gewicht<0>N^[0,00] DHL Paket<101>L^"

screenshot shows problem

code

est:

private void buttonEasy1_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     if (openFileDialog1.ShowDialog() ==   System.Windows.Forms.DialogResult.OK) 
     { 
      this.textBox1.Text = openFileDialog1.FileName; 
      this.labeltxt1.Text = openFileDialog1.SafeFileName; 

      // .txt einlesen Anfang 

      string[] lines1 = { "[" + labeltxt1.Text + "]", "Format = Delimited(;)", "ColNameHeader = False "}; 
      System.IO.File.WriteAllLines(@"C:\*\schema.ini", lines1); 


      string FileName1 = textBox1.Text; 

      OleDbConnection conn1 = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + 
        Path.GetDirectoryName(FileName1) + ";Extended Properties='text;';"); 

      conn1.Open(); 

      OleDbDataAdapter adapter1 = new OleDbDataAdapter 
        ("SELECT * FROM " + Path.GetFileName(FileName1), conn1); 

      DataSet ds1 = new DataSet("Temp"); 
      adapter1.Fill(ds1); 

      conn1.Close(); 

      dataGridView1.DataSource = ds1; 
      dataGridView1.DataMember = "Table"; 

      // .txt einlesen Ende 
+0

Je pense que vous devez faire cette colonne une chaîne type de données. Voir: https://stackoverflow.com/questions/9028029/how-to-change-datatype-of-a-datacolumn-in-a-datatable – Steve

Répondre

0

Essayez de changer le format de la colonne DataGrid. Par exemple:

dataGridView1.Columns[1].DefaultCellStyle.Format = "N0"; 

ou

dataGridView1.Columns[1].DefaultCellStyle.Format = "###################"; 
+0

Merci pour votre réponse Jalal! Fait le travail à mi-chemin. Maintenant, il affiche 340433914967320000 mais la valeur est 00340433914967320587. Le préfixe 00 n'est pas essentiel, alors que les 3 (4) derniers chiffres le sont. –

0

Informations complémentaires en ce qui concerne le commentaire de Steve -

J'ai essayé ces solutions:

How To Change DataType of a DataColumn in a DataTable?

DataTable dtCloned = dt.Clone(); 
dtCloned.Columns[1].DataType = typeof(String); 
foreach (DataRow row in dt.Rows) 
{ 
dtCloned.ImportRow(row); 
} 

et

adapter.FillSchema(table, SchemaType.Source); 
table.Columns[1].DataType = typeof (String); 
adapter.Fill(table); 

Rien n'a changé - afficher encore 3,40433191496732E + 17 au lieu de 00340433914967320587