Gambas France BETA


Pas de compte ? Incription

Charger un TableView à partir d'un fichier CSV

À propos de ce code

Bonjour,

Je vous présente un bout de code générique qui permet de charger un tableview à partir d'un fichier csv

pFilePath est le chemin du fichier.
pTableView est le tablview de la form.

le code du GridClean :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PUBLIC SUB GridClean(pTableView AS TableView) AS BOOLEAN

DIM TabVu AS TableView

TabVu = pTableView

'RAZ de la grid
TabVu.Clear
TabVu.Columns.Count = 0
TabVu.Rows.Count = 0

RETURN TRUE

CATCH
Message.Error(Error.Text & " " & Error.Where)
RETURN FALSE

END

Code source

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
PUBLIC FUNCTION GridLoad(pFilePath AS STRING, pTableView AS TableView) AS BOOLEAN
'chargement de la grille, dimensionnement de la grille entete de colonne ...

DIM FileWork AS File
DIM FileLine AS STRING
DIM FileLineArray AS String[]
DIM GridRowNbr AS INTEGER
DIM GridColNbr AS INTEGER
DIM i, x, y AS INTEGER
DIM FilePath AS STRING
DIM FileAccess AS BOOLEAN
DIM Tabvu AS TableView

FilePath = pFilePath
Tabvu = pTableView
'test de l acces au fichier
FileAccess = Access(FilePath)

'Sortie si pas d'accés
IF NOT FileAccess THEN
RETURN FALSE
ENDIF

'RAZ de la grid
IF NOT GridClean(Tabvu) THEN
RETURN FALSE
ENDIF

FileWork = OPEN FilePath FOR READ

'on lit la 1ere ligne du fichier qui contient l'entête
LINE INPUT #FileWork, FileLine

'Split découpe la chaine , que l'on charge dans un tableau
FileLineArray = Split(FileLine, ";")

'le nbre de colonne est défini par le nbre d'éléments splité
GridColNbr = FileLineArray.Count
Tabvu.Columns.Count = GridColNbr + 1 'rajout d'une colonne pour les totaux de fin de ligne
Tabvu.Columns[GridColNbr].Title = "Total Article"

'entete de colonne
FOR i = 0 TO GridColNbr - 1
Tabvu.Columns[i].Title = FileLineArray[i]
NEXT

'remplissage tableau
y = 0
Tabvu.Rows.Insert(y)
WHILE NOT Eof(FileWork)
LINE INPUT #FileWork, FileLine
FileLineArray = Split(FileLine, ";")
Tabvu.rows[y].Title = FileLineArray[0] & " " & FileLineArray[1] 'Entete de ligne (ici concaténétion des 2 premiers éléments
FOR x = 0 TO GridColNbr - 1
Tabvu[y, x].Text = Trim(FileLineArray[x])
NEXT
IF NOT Eof(FileWork) THEN
INC y
Tabvu.Rows.Insert(y)
GridRowNbr = y
ENDIF
WEND


FileWork.Close
RETURN TRUE

FINALLY
FileWork.Close
CATCH
'Message.Error(Error.Text & " " & Error.Where)
RETURN FALSE

END

Commentaires