Il est possible d'utiliser OleDB
et utiliser les feuilles Excel comme des tables de données dans une base de données...
Juste un exemple.....
string con =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;" +
@"Extended Properties='Excel 8.0;HDR=Yes;'";
using(OleDbConnection connection = new OleDbConnection(con))
{
connection.Open();
OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
using(OleDbDataReader dr = command.ExecuteReader())
{
while(dr.Read())
{
var row1Col0 = dr[0];
Console.WriteLine(row1Col0);
}
}
}
Cet exemple utilise le Microsoft.Jet.OleDb.4.0
pour ouvrir et lire le fichier Excel. Toutefois, si le fichier est de type xlsx (à partir d'Excel 2007), vous devez télécharger le fournisseur d'accès à Internet. Moteur de base de données Microsoft Access et l'installer sur la machine cible.
Le fournisseur est appelé Microsoft.ACE.OLEDB.12.0;
. Faites attention au fait qu'il y a deux versions de ce composant, une pour 32bit et une pour 64bit. Choisissez la version appropriée en fonction du débit de votre application et de la version d'Office installée (le cas échéant). Il y a beaucoup de bizarreries pour que ce pilote fonctionne correctement pour votre application. Voir cette question par exemple .
Bien sûr, vous n'avez pas besoin qu'Office soit installé sur la machine cible.
Bien que cette approche ait certains mérites, je pense que vous devriez accorder une attention particulière au lien signalé par un commentaire dans votre question Lecture de fichiers Excel à partir de C# . Il existe quelques problèmes concernant l'interprétation correcte des types de données et lorsque la longueur des données, présentes dans une seule cellule Excel, est supérieure à 255 caractères.