2013-01-11 6 views
0

Je souhaite remplir un DataTable avec un fichier texte délimité par des tabulations. Le fichier texte contient des données suivreComment remplir une Datatable avec un fichier texte délimité par des tabulations en C#?

Name Id Place 
Sam 2001 USA 
Raja 3455 India 
Allan 90101 Canada 

Lorsque j'utilise OleDBConnection pour importer le fichier texte dans un datatable, je reçois des données dans datatable comme suit

Name_Id_Place 
Sam2001USA 
Raja3455India 
Allan90101Canada 

Le fichier texte réel a 3 colonnes et 3 lignes, mais dans datatable j'ai obtenu toutes les 3 colonnes comme une seule colonne Name_Id_Place.

Quelqu'un peut-il me dire la colution pour ce problème?

+1

Pourriez-vous poster l'exemple de code nécessaire. –

Répondre

3
static void Main() 
    { 
     //create a data table and add the column's 
     DataTable table = new DataTable("table_name"); 
     table.Columns.Add("name", typeof (String)); 
     table.Columns.Add("id", typeof (Int32)); 
     table.Columns.Add("place", typeof (String)); 

     //start reading the textfile 
     StreamReader reader = new StreamReader("file_to_read"); 
     string line; 
     while ((line = reader.ReadLine()) != null) 
     { 
      string[] items = line.Split('\t'); 
      //make sure it has 3 items 
      if (items.Length == 3) 
      { 
       DataRow row = table.NewRow(); 
       row["name"] = items[0]; 
       row["id"] = Int32.Parse(items[1]); 
       row["place"] = items[2]; 
       table.Rows.Add(row); 
      } 
     } 
     reader.Close(); 
     reader.Dispose(); 

     // make use of the table 


     // when use is done dispose it 
     table.Dispose(); 
    } 
+0

Que faire si le fichier texte contient des milliers de lignes? –

+0

@VinothSrinivasan - Je suppose que jusqu'à mille ce serait bien, peut dire si elle traverse, 50K ou quelque chose! –

0

Ici, je pense que vous la lecture des données de fichier texte dans le bon sens, seul problème que je vois que votre fournisseur utilisé ne peut pas comprendre où une extrémité de la colonne, ce pourquoi lire toutes ligne comme une colonne

j'avais exactement le même résultat en essayant de lire les données du fichier texte avec OleDBConnection.

Dans mon connectionstring comme fournisseur J'utilisé:

Provider=Microsoft.Jet.OLEDB.4.0; 

Si vous avez utilisé même alors vous devez seulement modifier des options "Format" pour ce fournisseur dans le registre de Windows:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Text 

devez ensuite modifier « Format "key to value =" TabDelimited "

ou si vous souhaitez utiliser un autre caractère de délimitation (par exemple"; ") puis Format =" Délimité (;) "

+0

Merci Mais je ne pouvais pas trouver l'option Jet sous Microsoft dans le Registre. En outre, je veux charger une grande quantité de données dans la table SQL via DataTable. Donc, initialement, je charge DataTable à partir d'un fichier texte délimité par des tabulations qui contient 1000s de lignes. S'il vous plaît aidez-moi à faire cela? –

+0

J'utilise la chaîne de connexion OLEDB comme suit: @ "Provider = Microsoft.Jet.OLEDB.4.0; Source de données = | DataDirectory |; Propriétés étendues = 'text; HDR = Oui; FMT = Délimité'" –

+0

De quel système disposez-vous, 64 -bit ou système 32 bits? – Fabio

Questions connexes