2010-12-14 40 views
5

J'essaie d'importer des données d'Excel dans une base de données en utilisant C#. Voici le code que j'utilise pour le faire ...Importer des données Excel en C# sans que la première ligne ne devienne un nom de colonne?

string ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;" + 
        "Extended Properties=\"Excel 8.0;HRD=No;IMEX=1;\""; 
OleDbDataAdapter SheetAdapter = new OleDbDataAdapter("select * from ["Sheet1"]", conn); 
System.Data.DataTable excelData = new System.Data.DataTable(); 
SheetAdapter.Fill(excelData); 
excelData.TableName = "excelData"; 

foreach (DataRow row in excelData.Rows) 
{ 
    ProcessDataRow(row); 
} 

Quand je regarde le datatable lors du débogage de la première ligne de données est devenue les tables des noms de colonnes. Je ne comprends pas pourquoi cela se passe quand je mets HDR = Non dans la chaîne de connexion. Existe-t-il un moyen de forcer le DataTable à ne pas prendre la première ligne en tant que noms de colonne?

Répondre

5

L'exemple de code que vous avez fourni a HRD=No au lieu de HDR=No

+0

Oh mon ... C'était tout. J'ai passé trop de temps à ça. Merci – PICyourBrain

0

J'ai utilisé le NPOI library pour la tâche dont vous avez besoin et plus. La seule limitation est qu'il ne peut pas encore gérer le format Excel 2007, vous êtes donc limité au format 97-2003.

+0

J'aime utiliser mes données ole approche de l'adaptateur. Aucun assembly externe à distribuer. Prend en charge tous les fichiers xls actuels. et ce n'est pas si difficile à utiliser. (En supposant que vous ne mélangez pas HRD et HDR!) – PICyourBrain

+0

@Jordan. Je suis d'accord dans votre situation, il est logique d'utiliser simplement OleDataAdapter. Cependant, si votre application devient plus complexe et/ou si votre client veut plus de fonctionnalités, l'itinéraire que vous avez emprunté deviendra une impasse. – AngryHacker