RE:Como abrir un excel en una ventana c# y leer
Publicado por
nacho (1 intervención) el 25/10/2007 15:13:36
Leyendo un hoja de excel con Visual C#
Como sabemos los archivos de Microsoft Excel, son libros formados por varias hojas de calculos dentro de un solo archivo, ver figura 1
Los archivos de excel lo manejamos con el namespace "System.Data.OleDb".
Crearemos un dataset y un providerfactories el cual utilizaremos para leer es esquela del libro de excel:
DataSet dsMsExcel = new DataSet();
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
Con esta instrución leeremos el esquema del libro de excel
try
{
DataTable worksheets;
DbConnection connection = factory.CreateConnection();
connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.txtRutaArchivo.Text + ";Extended Properties=Excel 8.0;";
connection.ConnectionString = connectionString;
connection.Open();
worksheets = connection.GetSchema("Tables");
this.dGridViewTabla.DataSource = worksheets;
}
catch (Exception)
{
MessageBox.Show("Se produjo un error. Puede ser que la hoja de calculo a abrir no exista o posea un esquema diferente.");
}
una vez leido el esquema del libro de excel, leeremos el esquema de la hoja, para obtener las calumnas. Mediante la siguiente instrucción obtendremos lo mencionado.
try
{
DataTable columns;
string[] restrictions = { null, null, this.txtHolaExcel.Text, null };
DbConnection connection = factory.CreateConnection();
connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.txtRutaArchivo.Text + ";Extended Properties=Excel 8.0;";
connection.ConnectionString = connectionString;
connection.Open();
columns = connection.GetSchema("Columns", restrictions);
this.dGridViewColumns.DataSource = columns;
}
catch (Exception)
{
MessageBox.Show("Se produjo un error. Puede ser que la hoja de calculo a abrir no exista o posea un esquema diferente.");
}
leeremos los datos de la hoja de calculo de excel, con la siguiente instrucción como siempre lo mostraremos en un DataGridView
try
{
connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.txtRutaArchivo.Text + ";Extended Properties=Excel 8.0;";
DbDataAdapter adapter = factory.CreateDataAdapter();
DbCommand selectCommand = factory.CreateCommand();
string losCampos = string.Empty;
// Introdusco los campos en una listbox, para luego leerlo y armar una instrucción sql con los datos a buscar.
foreach (string theCampo in this.lstCampo.Items)
{
losCampos += (theCampo + ", ");
}
losCampos = losCampos.Remove(losCampos.Length - 2, 2);
//selectCommand.CommandText = "SELECT Codigo, Descripcion, Categoria, CodigoBarras FROM [Enero$]";
selectCommand.CommandText = "SELECT " + losCampos + " FROM [" + this.txtHolaExcel.Text + "]";
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
selectCommand.Connection = connection;
adapter.SelectCommand = selectCommand;
this.dsMsExcel.Tables.Clear();
adapter.Fill(this.dsMsExcel);
dGridViewDatos.DataSource = this.dsMsExcel.Tables[0];
}
catch (Exception ex1)
{
MessageBox.Show(ex1.Message + "Se produjo un error.");
}
Y al final obtendremos algo como esto.
como vemos realmente es muy facil leer un archivo de excel, com ADO.NET, utilice la ayuda del blog de David Hayden, para conseguir ciertos truquillos...
Publicado sábado, 14 de abril de 2007 20:11 por elperucho
Archivado en: ADO.NET 2.0,C#
Comentarios