ecrire dans un fichier XML à partirs d'un traitement excel
Bonjour voila mon petit pb,
PB : j'ai actuellement une BASE de données sous SQL server, avec 2 requetes je crée 2 dataset différents (l'un contenant des ID de personne + des roles associées, l'autre contenant l'ID de personnes + toutes leurs données relatives)
Le but est de maxer le tout pour associer les roles avec ces personnes (certaines personnes peuvent avoir plusieurs roles)
L'idée de depart etait d'ecrire le resultat dans un fichier excel (qui marche impecc :) )
je vous link le code etape par etape :
Connection a la base
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Sub ChargeTable(ByVal RqtCtc As String, ByVal TableName As String, ByVal DatasetCtc As System.Data.DataSet)
Dim con As New SqlConnection()
Dim sqlda As SqlDataAdapter
con = New SqlConnection(con_strg)
con.Open()
sqlda = New SqlDataAdapter(RqtCtc, con)
Try
' Récupération des données dans une table nomtable
sqlda.Fill(DatasetCtc, TableName)
Catch ex As Exception
MsgBox(ex.ToString)
Finally
con.Close()
End Try
End Sub |
Création des dataset role et contacts
Code:
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
| Sub rapport_excel(ByVal requete As String, ByVal requete2 As String)
Dim d As String = Format(Today, "yyyMMdd")
Dim d2 As String = Format(Now, "HH-mm")
'Création du DataSet contact
Dim data As New Data.DataSet()
Try
ChargeTable(requete, "RECHERCHE", data)
Catch ex As Exception
MsgBox(ex.ToString)
Exit Sub
End Try
'Ici on compte le nombre de lignes et de colonnes du datatable
Dim NbRow As Integer = 0
Try
NbRow = data.Tables("RECHERCHE").Rows.Count
Catch ex As Exception
End Try
Dim nbcol As Integer = data.Tables("RECHERCHE").Columns.Count
'Création du DataSet role
Dim data2 As New Data.DataSet()
Try
ChargeTable(requete2, "RECHERCHE", data2)
Catch ex As Exception
MsgBox(ex.ToString)
Exit Sub
End Try
'Ici on compte le nombre de lignes et de colonnes du datatable
Dim NbRow2 As Integer = 0
Try
NbRow2 = data2.Tables("RECHERCHE").Rows.Count
Catch ex As Exception
End Try
Dim nbcol2 As Integer = data2.Tables("RECHERCHE").Columns.Count |
Ecriture de mes resultat dans un fichier excel :
Code:
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
| Dim x As Integer
Dim y As Integer
Dim xlSheet As New Excel.Worksheet
xlSheet = xlApp.Workbooks.Add.ActiveSheet
xlSheet.Name = "Feuil1"
For y = 0 To nbcol - 1
For x = 0 To NbRow - 1
'En tête
xlSheet.Cells(1, y + 1) = data.Tables("RECHERCHE").Columns(y).ColumnName
'On rempli la case
xlSheet.Cells(x + 2, y + 1) = data.Tables("RECHERCHE").Rows(x).Item(y).ToString
Next
For x = 0 To NbRow - 1
xlSheet.Cells(x + 2, y + 16) = Rolexist(data.Tables("RECHERCHE").Rows(x).Item(y).ToString, data2)
Next
Next
xlSheet.SaveAs("C:\" + d.ToString + " " + d2.ToString + ".xml")
xlSheet = Nothing
'On quitte l'application et on détruit les objets
xlApp.Quit()
xlApp = Nothing |
La fonctione "roleexist" qui permet de macther les deux dataset en utilisant les ID des personne et qui permet de rajouter une colonne "role" au dataset contact
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Function Rolexist(ByVal Code As String, ByVal role As DataSet) As String
Dim x As Integer
Rolexist = ""
Try
For x = 0 To role.Tables("RECHERCHE").Rows.Count - 1
If Code = role.Tables("RECHERCHE").Rows(x).Item(0).ToString() Then
Rolexist += role.Tables("RECHERCHE").Rows(x).Item(1).ToString() + Chr(13)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return Rolexist
End Function |
j'aimerais au lieu d'ecrire dans mes cellules excel ecrire dans un fichier XML,
j'ai deja essayé la methode WriteXML pour les dataset mais elle ne me satisfait pas.
J'aimerais le créer a la main avec des print#1 "[[CDATA etc...."
si quelqu'un m'a compris :roll: je sollicite son aide :)