Bueno, en esta ocacion les traigo una aplicacion la cual consiste en leer los datos de una hoja de excel y mostrarlos en un DataGridView.
Para este ejemplo , el diseño del formulario sera el siguiente:
Ahora damos doble click en el boton buscar y pasaremos a crear el codigo correspondiente:
Importamos la libreria System.Data.OleDb a nuestro proyecto utilizando using System.Data.OleDb;
ahora creamos un metodo llamado LlenarGrid que reciba como parametro la ruta del archivo que vamos a abrir y la hoja que vamos a leer, estos deben ser de tipo string.
el codigo del metodo es el siguiente:
private void LLenarGrid(string archivo,string hoja) { //declaramos las variables OleDbConnection conexion = null; DataSet dataSet = null; OleDbDataAdapter dataAdapter = null; string consultaHojaExcel = "Select * from [" + hoja + "$]"; //esta cadena es para archivos excel 2007 y 2010 string cadenaConexionArchivoExcel = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + archivo + "';Extended Properties=Excel 12.0;"; //para archivos de 97-2003 usar la siguiente cadena //string cadenaConexionArchivoExcel = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + archivo + "';Extended Properties=Excel 8.0;"; //Validamos que el usuario ingrese el nombre de la hoja del archivo de excel a leer if (string.IsNullOrEmpty(hoja)) { MessageBox.Show("No hay una hoja para leer"); } else { try { //Si el usuario escribio el nombre de la hoja se procedera con la busqueda conexion = new OleDbConnection(cadenaConexionArchivoExcel);//creamos la conexion con la hoja de excel conexion.Open(); //abrimos la conexion dataAdapter = new OleDbDataAdapter(consultaHojaExcel, conexion); //traemos los datos de la hoja y las guardamos en un dataSdapter dataSet = new DataSet(); // creamos la instancia del objeto DataSet dataAdapter.Fill(dataSet, hoja);//llenamos el dataset dataGridView1.DataSource = dataSet.Tables[0]; //le asignamos al DataGridView el contenido del dataSet conexion.Close();//cerramos la conexion dataGridView1.AllowUserToAddRows = false; //eliminamos la ultima fila del datagridview que se autoagrega } catch (Exception ex) { //en caso de haber una excepcion que nos mande un mensaje de error MessageBox.Show("Error, Verificar el archivo o el nombre de la hoja",ex.Message); } } }
Ahora el boton buscar tendra el siguiente codigo:
private void button1_Click(object sender, EventArgs e) { //creamos un objeto OpenDialog que es un cuadro de dialogo para buscar archivos OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Archivos de Excel (*.xls;*.xlsx)|*.xls;*.xlsx"; //le indicamos el tipo de filtro en este caso que busque //solo los archivos excel dialog.Title = "Seleccione el archivo de Excel";//le damos un titulo a la ventana dialog.FileName = string.Empty;//inicializamos con vacio el nombre del archivo //si al seleccionar el archivo damos Ok if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //el nombre del archivo sera asignado al textbox txtArchivo.Text = dialog.FileName; hoja = txtHoja.Text; //la variable hoja tendra el valor del textbox donde colocamos el nombre de la hoja LLenarGrid(txtArchivo.Text,hoja); //se manda a llamar al metodo dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; //se ajustan las //columnas al ancho del DataGridview para que no quede espacio en blanco (opcional) } }
Espero les sirva, si les sirvio no olviden comentar, cualquier duda estoy a sus ordenes.
Saludos.
Paginas de referencia en VB : http://blog.desarrolladoresmx.net/2012/10/04/importar-de-un-archivo-de-excel-a-un-datagridview/