exporter une feuille excel vers une table access
Bonjour
Je travaille sur une petite application que je dois exporter des donnees enregistrer dans un fichier excel vers ma base de donnees access.
vous avez une idee
Merci
issues pour importer un feuille de classeur excel dans bd access,utiliser xml
Bonjour sanfour_walhan
Ceci est une issue,comme mentionne par Sihammaster.Une autre issue est d'utiliser le mapping XML supporte par tous les documents Office Excel et Word qui me parait plus consistant et expeditif.
En effet un "mappage" entre classeur et table access peut etre etabli en xml surtout si il y de grandes quantites de donnees en jeu et que la liaison est frequente .
voici l'approche et le code:
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 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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
Imports OXL = Microsoft.Office.Interop.Excel
Imports System.IO
Public Class frmExcelXML
' Declare Excel Application
Dim excelApp As OXL.Application
' Declare Excel WorkBook
Dim WithEvents workbook1 As OXL.Workbook
' Declare XML map.
Dim xmlMap1 As OXL.XmlMap
' Declare Chemin
Dim cheminFichier As String = Directory.GetCurrentDirectory & "\"
' nom du filename XML .
Dim xmlFilename As String = "XmlDocumentA.xml"
Private Sub btnMapExcelToDT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMapExcelToDT.Click
Call WorkbookXmlExportEvents()
End Sub
'IMPORTATION DE DONNEES DATABLE VERS EXCEL "LIEES" PAR UN SCHEMA XSD
'SAUVEGARDE DANS UN FICHIER XML (DATATABLE & SCHEMA XSD)
Private Sub WorkbookXmlExportEvents()
' Create a new Dataset and DataTable.
Dim ds As New DataSet()
Dim dt As System.Data.DataTable = New System.Data.DataTable
dt = ds.Tables.Add("Customers")
dt.Columns.Add(New DataColumn("LastName"))
dt.Columns.Add(New DataColumn("FirstName"))
' Add a new row to the DataTable.
Dim dr As DataRow = dt.NewRow()
dr("LastName") = "Chan"
dr("FirstName") = "Gareth"
dt.Rows.Add(dr)
' Init Excel Application
excelApp = New OXL.Application
' Add a new workbook
workbook1 = excelApp.Workbooks.Add
' Init XML map & Add XML map to Workbook1.
xmlMap1 = workbook1.XmlMaps.Add(ds.GetXmlSchema())
'workbook1.XmlMaps.Add("c:\schemas\salesorder.xsd")
'Attribuer un nom pour garder une reference a ce xmlmap
xmlMap1.Name = "PersonnelMap"
'Mapper range1 à Range("A1")
Dim range1 As OXL.Range = workbook1.Worksheets(1).Range("A1")
' Import the data into Sheet1.
workbook1.XmlImportXml(ds.GetXml(), xmlMap1, True, _
range1)
' Export data into xml file.
If xmlMap1.IsExportable Then
workbook1.SaveAsXMLData(cheminFichier & xmlFilename, xmlMap1)
End If
End Sub
Private Sub workbook1_BeforeXmlExport(ByVal Map As Microsoft.Office.Interop.Excel.XmlMap, ByVal Url As String, ByRef Cancel As Boolean) Handles workbook1.BeforeXmlExport
MessageBox.Show("Microsoft Excel is exporting XML from " & _
"the XmlMap.")
End Sub
Private Sub workbook1_AfterXmlImport(ByVal Map As Microsoft.Office.Interop.Excel.XmlMap, ByVal IsRefresh As Boolean, ByVal Result As Microsoft.Office.Interop.Excel.XlXmlImportResult) Handles workbook1.AfterXmlImport
If Result = OXL.XlXmlExportResult.xlXmlExportSuccess Then
MessageBox.Show("XML export succeeded.")
Else
MessageBox.Show("XML export failed.")
End If
End Sub
'IMPORTATION DE DONNEES EXCEL(XML) DANS DATABLE
Private Sub btnLoadXmlIntoDT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadXmlIntoDT.Click
' Create a new DataSet.
Dim newDataSet As New DataSet("New DataSet")
' Read the XML document back in.
' Create new FileStream to read schema with.
Dim streamRead As New System.IO.FileStream _
(cheminFichier & xmlFilename, System.IO.FileMode.Open)
' Read the XML document into the DataSet.
newDataSet.ReadXml(streamRead)
' view datable in newDataSet
Me.DataGridView1.DataSource = newDataSet
Me.DataGridView1.DataMember = newDataSet.Tables(0).TableName
End Sub |
Mapping XML supporte depuis versions office 2003 sp2 & office 2007 Professionnelles.
bon code....