
Leer un archivo de Excel con Microsoft.ACE.OLEDB
Publicado por Leonardo Josué (25 intervenciones) el 13/11/2008 19:35:10
Hola nuevamente a todos los foristas.
Nuevamente les presento un problema al tratar de leer achivos de excel, ahora utilizando OLEDB. El problema es otra vez al momento de querer leer una columna que contiene fechas. Esta columna contiene información más o menos así:
A
-----------------------------------
12/12/2000 <- Formato de Celda: Fecha
12/12/2000 <- Formato de Celda: Fecha
Sin Fecha Determinada <- Formato de Celda: Texto
12/12/2000 <- Formato de Celda: Fecha
12/12/2000 <- Formato de Celda: Fecha
Tengo mi string de conexión como sigue:
connectionString ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/Archivo.xlsx;Extended Properties="Excel 12.0;HDR=NO");
Lo que deseo hacer es seleccionar todo el contenido del archivo y mostrarlo en un GridView. Para hacer esto hago lo siguiente:
string SelectSQL = "select * from [Hoja1$]";
OleDbCommand dbCommand = null;
OleDbDataAdapter dataAdapter = null;
DataTable dTable = null;
try
{
conn = new OleDbConnection(@connectionString);
conn.Open(); // Abrimos la conexión al archivo
dbCommand = new OleDbCommand(SelectSQL.ToString(), conn);
dataAdapter = new OleDbDataAdapter(dbCommand);
//Crear una nueva Tabla
dTable = new DataTable();
dataAdapter.Fill(dTable);
//Asignar la tabla al GridView
if (dTable.Rows.Count > 0)
{
//Lo ligamos al GridView
GVArchivo.DataSource = dTable;
GVArchivo.DataBind();
}
} //del try
catch (Exception ex)
{
Error = true;
} //del catch
finally
{
// Eliminar los objetos y cerrar las conexiones.
if (dTable != null)
{ dTable.Dispose(); }
if (dataAdapter != null)
{ dataAdapter.Dispose(); }
if (dbCommand != null)
{ dbCommand.Dispose(); }
if (conn != null)
{
conn.Close();
conn.Dispose();
conn = null;
}
}
El problema está en que en mi GridView para el tercer registro me regresa un vacio (null)
F1
-----------------------------------
12/12/2000
12/12/2000
12/12/2000
12/12/2000
Me imagino que el problema está precisamente porque el tercer registro no tiene el mismo formato que los otros (es texto).
Cómo puedo especificar mi select para que me regrese correctamente todos los valores???
Saludos y muchas gracias de antemano
Nuevamente les presento un problema al tratar de leer achivos de excel, ahora utilizando OLEDB. El problema es otra vez al momento de querer leer una columna que contiene fechas. Esta columna contiene información más o menos así:
A
-----------------------------------
12/12/2000 <- Formato de Celda: Fecha
12/12/2000 <- Formato de Celda: Fecha
Sin Fecha Determinada <- Formato de Celda: Texto
12/12/2000 <- Formato de Celda: Fecha
12/12/2000 <- Formato de Celda: Fecha
Tengo mi string de conexión como sigue:
connectionString ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/Archivo.xlsx;Extended Properties="Excel 12.0;HDR=NO");
Lo que deseo hacer es seleccionar todo el contenido del archivo y mostrarlo en un GridView. Para hacer esto hago lo siguiente:
string SelectSQL = "select * from [Hoja1$]";
OleDbCommand dbCommand = null;
OleDbDataAdapter dataAdapter = null;
DataTable dTable = null;
try
{
conn = new OleDbConnection(@connectionString);
conn.Open(); // Abrimos la conexión al archivo
dbCommand = new OleDbCommand(SelectSQL.ToString(), conn);
dataAdapter = new OleDbDataAdapter(dbCommand);
//Crear una nueva Tabla
dTable = new DataTable();
dataAdapter.Fill(dTable);
//Asignar la tabla al GridView
if (dTable.Rows.Count > 0)
{
//Lo ligamos al GridView
GVArchivo.DataSource = dTable;
GVArchivo.DataBind();
}
} //del try
catch (Exception ex)
{
Error = true;
} //del catch
finally
{
// Eliminar los objetos y cerrar las conexiones.
if (dTable != null)
{ dTable.Dispose(); }
if (dataAdapter != null)
{ dataAdapter.Dispose(); }
if (dbCommand != null)
{ dbCommand.Dispose(); }
if (conn != null)
{
conn.Close();
conn.Dispose();
conn = null;
}
}
El problema está en que en mi GridView para el tercer registro me regresa un vacio (null)
F1
-----------------------------------
12/12/2000
12/12/2000
12/12/2000
12/12/2000
Me imagino que el problema está precisamente porque el tercer registro no tiene el mismo formato que los otros (es texto).
Cómo puedo especificar mi select para que me regrese correctamente todos los valores???
Saludos y muchas gracias de antemano
Valora esta pregunta


0