02/05/2013, 09:16
|
| | Fecha de Ingreso: abril-2013
Mensajes: 2
Antigüedad: 11 años, 6 meses Puntos: 0 | |
Respuesta: Leer gran cantidad de celdas de un Excel y realizar operaciones con ellas //************************************************** *****************************
//Leer el path del archivo Excel que tiene los datos del cliente
//Dimensionar los elementos necesarios para leer y cargar los datos
OleDbConnection oConn = new OleDbConnection();
OleDbCommand oCmd = new OleDbCommand();
OleDbDataAdapter oDa = new OleDbDataAdapter();
DataSet oDs = new DataSet();
string rutaArchivo = "C:Cualquier ruta donde tienes el Excel a leer\\Prueba.xlsx";
string dato = string.Empty, rut = string.Empty, nombre = string.Empty, cuentaCte = string.Empty, totalNomina = string.Empty, cantidadReg = string.Empty, fechaEfect = string.Empty, tipoAbono = string.Empty;
//Atención: Esta es la cadena de conexión. La misma lee el archivo especificado en el path
//Capturo la extensio, dependiendo difiere de la connectionstring
if (Path.GetExtension(rutaArchivo).Equals(".xls"))
{
oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + (rutaArchivo) + "; Extended Properties='Excel 8.0;HDR=YES;MaxScanRows=;IMEX=1;'";
}
else
{
oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + (rutaArchivo) + "; Extended Properties='Excel 12.0;HDR=YES;MaxScanRows=;IMEX=1;'";
}
// Abrir la conexión, y leer [Hoja 1] del archivo Excel
oConn.Open();
oCmd.CommandText = "select * from [Hoja1$]";
oCmd.Connection = oConn;
oDa.SelectCommand = oCmd;
//Llenar el DataSet
oDa.Fill(oDs,"Clientes");
DataTable tabla = oDs.Tables[0];
//GridView para comprobar que todos los datos se estan pasando, luego lo sacas si quieres.
GridView1.DataSource = tabla;
GridView1.DataBind();
//Recorres la tabla para capturas los datos. ese me servia ami, tu lo modificas a tu gusto.
for (int uu = 0; uu < tabla.Rows.Count; uu++)
{
nombre = tabla.Rows[uu][1].ToString();
cuentaCte = tabla.Rows[uu][2].ToString();
rut = tabla.Rows[uu][3].ToString();
totalNomina = tabla.Rows[uu][4].ToString();
cantidadReg = tabla.Rows[uu][5].ToString();
}
oConn.Close();
Espero que te sirva |