Bonjour à tous,
Je travaille sous Visual Studio. Mon problème est le suivant :
J'ai un fichier texte qui comporte des informations de la façon suivante :
[Code Opération (2)][N° E (1)][N° séquence (5)][Date du jour (6) ][Code (5) ][code guichet (5) ][N° compte (12)][Clé RIB (2)][Matricule (7) ][Nom et P (24)][Libellé B.(17) ][Libellé O. (30) ][Montants (12) ]
02200002200614123540111111111111111183203 totototo ZZZZZZZZZZZZZZZ Virement 000000645029
Les valeurs entre parenthèses sont le nombres caractères maximum et minimum que les données de la colonne doivent avoir y compris les espaces qui constituent aussi des caractères.
Je souhaiterais récupérer ces informations et les enregistrer d'abord dans un dataset ensuite pouvoir faire des requêtes les colonnes et vérifier qu'il n'y a pas d'erreurs enfin enregistrer les erreurs trouvées dans un fichier texte. Mon souci c'est que je n'arrive pas à délimiter les colonnes avec la fonction split() vu que se sont des colonnes comportant plusieurs données.
Ci-dessous 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 string delimiter = ""; string tablename = "DTable"; DataSet dataset = new DataSet(); utf8 = new UTF8Encoding(false); StreamReader sr = new StreamReader(TXTSOURCEBIAO.Text, utf8); string csv = File.ReadAllText(FILEDIALOGBIAO.FileName); dataset.Tables.Add(tablename);//création d'une table mémoire //définition des colonne de la table mémoire ou tampon dataset.Tables[tablename].Columns.Add("C1"); dataset.Tables[tablename].Columns.Add("C2"); dataset.Tables[tablename].Columns.Add("C3"); dataset.Tables[tablename].Columns.Add("C4"); dataset.Tables[tablename].Columns.Add("C5"); dataset.Tables[tablename].Columns.Add("C6"); dataset.Tables[tablename].Columns.Add("C7"); dataset.Tables[tablename].Columns.Add("C8"); dataset.Tables[tablename].Columns.Add("C9"); dataset.Tables[tablename].Columns.Add("C10"); dataset.Tables[tablename].Columns.Add("C11"); dataset.Tables[tablename].Columns.Add("C12"); dataset.Tables[tablename].Columns.Add("C13"); dataset.Tables[tablename].Columns.Add("C14"); dataset.Tables[tablename].Columns.Add("C15"); dataset.Tables[tablename].Columns.Add("C16"); dataset.Tables[tablename].Columns.Add("C17"); dataset.Tables[tablename].Columns.Add("C18"); dataset.Tables[tablename].Columns.Add("C19"); dataset.Tables[tablename].Columns.Add("C20"); string allData = sr.ReadToEnd(); string[] rows = allData.Split("\r".ToCharArray()); int count = rows.Length; foreach (string r in rows) { //découpe la chaine en un tableau de chaine ou de mot délimiter par la valeur de variable délimité string[] items = r.Split(delimiter.ToCharArray()); dataset.Tables[tablename].Rows.Add(items); } int x = 0; int y = 0; //remplissage du dataset avec les données du fichier txt int count1 = dataset.Tables[tablename].Rows.Count;
Partager