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
| Function RemplirDataTable(ByVal CheminFichier As String, ByRef TabCol() As TabDonnee) As DataTable
'Étape 1 : On initialise le DataTable qui sera renvoyé par la fonction une fois remplie'
Dim ExcelTable As New DataTable
'Étape 2 : On initialise un integer qui me permettra déviter de passer en paramètre la première ligne du fichier Excel qui correspond aux entêtes du fichier.'
Dim Boucle As Integer = 0
'Étape 3 : On initialise une variable qui représentera la feuille Excel déposé par ladhérent.'
Dim wk As Infragistics.Excel.Workbook = Infragistics.Excel.Workbook.Load(CheminFichier)
'Étape 4 : J'ouvre une gestion d'erreur'
Try
'Transaction - Étape 1 : Si le fichier envoyé par ladhérent correspond bien à ce qui est attendu je récupère les index des colonnes'
'dans le fichier Excel avec la fonction Verif_Entete_Excel (
).'
'Cette fonction permet de me retourner un booléen qui indique si oui ou non le fichier correspond aux critères attendus.'
If Verif_Entete_Excel(wk, TabCol) Then
'Transaction - Étape 1.1 : On parcourt le tableau contenant les colonnes attendues. Afin d'être sur que l'indice ne sorte pas du tableau'
'Il faut prendre en compte le contenue TOTAL de l'arraylist (c'est à dire chaque éléments de chaque dimension) ET '
'Le nombre d'éléments dans la première valeur afin de connaître le nombre exact de dimension. Puis il suffit de diviser le global par le nombre de colonne'
'Pour obtenir l'index maximum de l'ArrayList
For i As Integer = 0 To TabCol.Length - 1 Step 1
'Transaction - Étape 1.1.1 : Si lindex de la colonne est renseigne alors cela veut dire quil était présent dans'
'la feuille Excel et quil faut donc lajouter dans le DataTable car la cellule de cette colonne sera ajouté également'
If TabCol(i).ID = 0 Or TabCol(i).ID <> Nothing Then
'Transaction - Étape 1.1.1 : Je lajoute dans les colonnes du DataTable'
ExcelTable.Columns.Add(TabCol(i).Nom_Colonne, GetType(String))
ExcelTable.Columns.Item(i).Caption = TabCol(i).Nom_Colonne
End If
Next
'Transaction - Étape 1.2 : Pour chaque ligne dans la feuille Excel déposé par ladhérent
For Each wkrow As WorksheetRow In wk.WindowOptions.SelectedWorksheet.Rows
'Transaction - Étape 1.2.1 : Si la boucle est = 0 alors cela veut dire que la collection de cellule corresponds aux en-têtes de colonne. Comme je n'en veux pas'
'Je fais en sorte de ne pas ajouter la ligne.'
If Boucle = 0 Then
'On incrémente l'integer pour ne pas boucler indéfiniment
Boucle += 1
'Transaction - Étape 1.2.1.1 : Je regarde si il a des données dans les cellules passer en parametre'
Else
'Transaction - Étape 1.2.1.1.1 : Sinon on ajoute au datarow la ligne si elle n'est pas vide, via la fonction Ajout_Test_Donnees()
Ajout_Test_Donnees(wkrow.Cells, ExcelTable, TabCol)
End If
Next
'Étape 5 : Si le fichier n'est pas conforme alors le datatable retourner est vide.' Il faut donc remonter une erreur pour empêcher l'envoie d'un mail vide.'
Else
Error 1
End If
Catch ex As Exception
Throw ex
End Try
Return ExcelTable
End Function |