2011-07-14 66 views
6

Estoy importando un archivo xls usando OleDbCommand a un ds. El problema que estoy teniendo es durante el foreach en mi ds es omitir para la primera fila. No puedo entender por qué. ¿Alguna sugerencia?C# ¿Excel omitiendo la primera fila?

cmd.CommandText = string.Format("SELECT * FROM [{0}$]", worksheetName); 
conn.Open(); 

var adapter = new OleDbDataAdapter(); 
var ds = new DataSet(); 
adapter.SelectCommand = cmd; 
adapter.Fill(ds); 
var table = ds.Tables[0]; 

foreach(DataRow row in table.Rows){ // rest of my code } 
+2

¿Su hoja de cálculo tiene una fila de encabezado? Si no, supongo que cree que lo haces y está tratando a la fila superior como los encabezados de las columnas. –

+1

¿Cuál es su cadena de conexión? Lo más probable es que piense que la primera fila es un encabezado y lo está ignorando. –

+0

¿Tal vez se necesita la primera línea como título? –

Respuesta

13

Cambiar la cadena de conexión (como se menciona en el comentario) de:

string cnn = string.Format( 
    "Provider=Microsoft.ACE.OLEDB.12.0;" + 
    "data source={0}{1}{2};" + 
    "Extended Properties=Excel 8.0;", 
    fileLocation, fileName, fileExtension); 

a:

string cnn = string.Format( 
    "Provider=Microsoft.ACE.OLEDB.12.0;" + 
    "data source={0}{1}{2};" + 
    "Extended Properties=Excel 8.0;HDR=No", 
    fileLocation, fileName, fileExtension); 
+0

Gracias a todos. Eso hizo el truco. – Scott

0

Quizás le haya dicho que saltee la primera fila. Recuerdo una propiedad que suena algo así como FirstRowIsHeader. Creo que si eso se establece en verdadero, entonces se saltea. esto se puede cambiar en el momento en que crea su conexión

+0

No, el código está como pegado. ¡sin instrucciones para saltear la primera fila! Así que a menos que de manera predeterminada sea verdadero. – Scott

+0

Sí, creo que por defualt se establece en verdadero, intente configurar HDR = No, use este http://www.connectionstrings.com/excel – saj

7

Compruebe la cadena de conexión. Lo más probable es que contiene:

HDR=Yes 

lo que indica que la primera fila es una cabecera

+2

... y si lo está, cámbielo a 'HDR = No' :) –

Cuestiones relacionadas