2010-12-14 18 views
5

Estoy tratando de importar datos de Excel en una tabla de datos usando C#. Aquí está el código que utilizo para hacerlo ...Importación de datos de Excel en C# sin que la primera fila se convierta en nombres de columna?

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); 
} 

Cuando miro la tabla de datos, mientras que la depuración de la primera fila de datos se ha convertido en los nombres de columna tablas. No entiendo por qué sucede esto cuando pongo HDR = No en la cadena de conexión. ¿Hay alguna manera de forzar al DataTable a no tomar la primera fila como nombres de columna?

Respuesta

5

El ejemplo de código que ya ha proporcionado tiene HRD=No en lugar de HDR=No

+0

Oh mi ... Eso fue todo. Pasé mucho tiempo hablando de esto. Gracias – PICyourBrain

0

Utilicé el NPOI library para la tarea que usted solicitó y más. La única limitación es que aún no puede manejar el formato de Excel 2007, por lo que está limitado al formato 97-2003.

+0

me gusta usar mi acercamiento adaptador de datos OLE. Sin ensambles externos para distribuir. Admite todos los archivos xls actuales. y no es tan difícil de usar. (¡Suponiendo que no mezcle HRD y HDR!) – PICyourBrain

+0

@Jordan. Estoy de acuerdo en su situación, tiene sentido usar OleDataAdapter. Sin embargo, si tu aplicación se vuelve más compleja y/o tu cliente quiere más características, la ruta que hayas tomado se convertirá en un callejón sin salida. – AngryHacker

Cuestiones relacionadas