Suite à de multitudes recherches sur comment importé un classeur Excel en VB.net ou en C#, et à des multiples questions posées à cet effet sur le forum vb.net ou C#. Je me permets de vous présenté dans ce billet de blog une méthode simple et efficace pour importé un classeur Excel vers un DataGridView en VB.net ou C#.
Dans cet exemple nous utiliserons la technologie ADO.met qui permet d’exécuter des requêtes SQL sur Excel, ainsi grâce à une requête SQL nous pourrons définir les données a sélectionné suivant la feuille, la colonne, la ligne ou la cellule.
Cet exemple suppose que vous avez votre formulaire avec un DataGridView nommé DataGridView1
- Exemple VB.net
Dim dat As DataSet
dat = New DataSet
'déclaration et utilisation d'un OLeDBConnection
Using Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ExcelFile.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""")
' Conn.Open()
'déclaration du DataAdapter
'notre requête sélectionne toute les cellule de la Feuil1
Using Adap As OleDbDataAdapter = New OleDbDataAdapter("select * from [Feuil1$]", Conn)
'Chargement du Dataset
Adap.Fill(dat)
'On Binde les données sur le DGV
DataGridView1.DataSource = dat.Tables(0)
End Using
'le end using libère les ressources
End Using
– Exemple C#
DataSet Dat;
Dat = new DataSet();
//déclaration d'un OLeDBConnection
OleDbConnection conn = new OleDbConnection(/*"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\ExcelFile.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""*/);
//déclaration du DataAdapter
//notre requête sélectionne toute les cellule de la Feuil1
OleDbDataAdapter Adap = new OleDbDataAdapter("select * from [Feuil1$]", conn);
//Chargement du Dataset
Adap.Fill(Dat);
//On Binde les données sur le DGV
DataGridView1.DataSource = Dat.Tables[0] ;
Bonne programmation à tous et à bientôt pour d’autres astuces
Salut, comme spécifie par Philippe donne nous un peu plus de détails. Et justement ça me rappel que je devrais corriger la procédure C#, mais pour l’instant je suis très occupé.
> mais ça fonction pas
Loin de moi l’idée de m’immiscer, mais si tu ne donnes pas plus de détails…
votre code et très bien ms il fonctionne pas chez moi j’ai modifier le chemin du data source et le nom de la feuille mais ça fonction pas voici mon code
Dim Conn As OleDbConnection = New OleDbConnection(« Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:canevas SITUATION RECETTES.xlsx;Extended Properties= » »Excel 8.0;HDR=Yes;IMEX=1″ » »)
‘ Conn.Open()
‘déclaration du DataAdapter
‘notre requête sélectionne toute les cellule de la Feuil1
Dim Adap As OleDbDataAdapter = New OleDbDataAdapter(« select * from [Feuil4$] », Conn)
‘Chargement du Dataset
Adap.Fill(ds1)
‘On Binde les données sur le DGV
DGV.DataSource = ds1.Tables(0)
Merci pour la remarque je vais sur le point corriger cella, Je crois que c’est du au fait que j’ai utiliser le fameux Bloc note pour traduire le code VB.net en C# :aie:.
Petite coquille sur ton code C#, tu as la connection string en commentaires (et les using ont disparu …)
Attention, avec ce code, IMEX=1 va convertir le contenu des cellules en texte si au moins une des cellules d’une colonne donnee est du texte ou non numerique…et ca peut parfois poser probleme
Sinon, 100% d’accord, il vaut mieux utiliser OLEDB que automation pour faire de la simple recuperation de donnees