sacha1435
Messages postés94Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 octobre 2005
-
10 juin 2005 à 12:57
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008
-
10 juin 2005 à 14:29
Bonjour,
J'ai un fichier csv contenant sur une même ligne séparé par des "," des intègres, string, et date je voudrai placer toutes ces données
dans une variable tableau.
Le nombre de colonne reste toujours le même, 6 colonnes.
Le nombre de ligne varie.
Existe il une méthode particulière pour ce faire ou dois je traité chaque ligne avec une boucle ?
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 10 juin 2005 à 14:08
j'ai trouvé ca sur msdn :
Sub ReadTextLinesFromFile()
Dim file As New System.IO.StreamReader("c:\test.txt")
Dim oneLine As String
oneLine = file.ReadLine()
While (oneLine <> "")
Console.WriteLine(oneLine)
oneLine = file.ReadLine()
End While
file.Close()
End Sub
En dehors de ca, je serais plutot à conseiller les collections, les arraylist, ou sortedlist afin de mémoriser les données. Pour ma part le top du top c'est le sortedlist. En effet, le Sortedlist apporte une capacité immédiate, tel que le "Add" avec un "obj" et une "key", ce qui permet d'aussitot renseigner.
juste un petit exemple (non tester puisque pas de .net sur le poste actuel)
--Objet contenant tes données au nombre de 6
private structure S_Donne
dim D0 as string
dim D1 as string
dim D2 as string
dim D3 as string
dim D4 as string
dim D5 as string
end structure
private MyList as new sortedlist 'delclaration de ta sortedlist
--- tu as 6 données
dim Chaine as string = "......." ' chaine contenant toute ta ligne
dim Splitchaine() as string = split(chaine,",")
dim i as integer = 0
for i = 0 to ubound(splitchaine)
Dim Donne as S_Donne
with Donne
.D0 = Splitchaine(0).to string
.D1 =Splitchaine(1).to string
.D2 =Splitchaine(2).to string
.D3 =Splitchaine(3).to string
.D4 =Splitchaine(4).to string
.D5 =Splitchaine(5).to string
MyList.add(.D0, Donne) '(key, objet) en imaginant que ton critere principal est .D0
end with
next
--- D'un autre coté si tu as besoin de récupere tel ou tel objet "donne"
------- test si la key existe
if Mylist.containskey("ma1eredonnée") then
dim TakeObject as S_Donne = ctype(mylist("ma1eredonnée") , S_Donne)
' Supposant que tu as des labels
with TakeObject
.D0 = Label1.text
.D1 =Label2.text
.D2 =Label3.text
.D3 =Label4.text
.D4 =Label5.text
.D5 =Label6.text
end with
end if
--- Pour vider la list
MyList.clear
--- Il y a aussi les methodes pour "virer" les données indésirables et plein d'autres choses.
c'est juste un aperçu et je ne sais pas si ca pourra te servir, mais c'est un bon moyen de classer des données sans pour autant passer par les tableaux parfois embetant a gérer.
Bonne prog,
[mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n
sacha1435
Messages postés94Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 octobre 20052 10 juin 2005 à 13:31
Merci de votre attention Mr Moustachu,
traitement ligne par ligne dans une boucle OK.
Comment faire pour les colonnes ? elle sont au nombre de 6, je doit faire une recherche de caractère sur la "," pour séparé mes colone dans la variable ou il existe une fonction ?
pour déterminer le nombre de lignes dans le csv j'utilise la fonction (LOF) ou (Length) ?
Pour la variable tableau :
Redim préserve mavariable(x,5)
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 10 juin 2005 à 13:51
Ok autant pour moi, j'ai lu trop vite... ça m'arrive trop souvent.
Je ne me souviens pas de fonctions qui te "parse" ta ligne (comme en
PHP par exemple), donc je te suggère de boucler sur ta ligne.
Cependant, quelqu'un a déjà du rencontrer le problème et ça ne
m'étonnerait pas que tu trouves sur le site une fonction qui le fait.
LOF doit te donner la taille en octets (ou bytes je sais pas) de ton
fichier mais pas le nombre de lignes (à moins que chaque ligne soit de
longueur fixe)
sacha1435
Messages postés94Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 octobre 20052 10 juin 2005 à 14:15
Merci liquide,
Bon je vais testé cette méthode.
Je ne dois pas retravailler ces données je dois juste les lires sans plus mais en la passant dans une variable.
Pour en resté avec ma variable tableau, pour ce qui est de séparé mes colonne
j'ai trouvé ceci http://www.vbfrance.com/forum.v2.aspx?ID=434901 avec la méthode "split" je devrais y arrivé plus facilement ?
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 10 juin 2005 à 14:18
lol, tu remarqueras que j'utilise aussi le split
Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 10 juin 2005 à 14:29
petite précision, ne connaissant pas l'interieur de ton csv, la Key est une clé unique, j'ai juste imaginé comme critere, le .D0 comme élément principal et unique. si par ailleur il y avait des doublons , da ce cas précis, ca planterait. Il faurait alors passer le bouclage en prenant la Key le numéro "i" du bouclage, pour eviter les erreurs.
Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n