La idea sería cargar un fichero de excel que contiene datos en una 
tabla para que se muestren en un DataViewGrid y así poder pasar a una 
base de datos SQL.
Para ello vamos a hacer uso de OLE DB,
 (Object Linking and Embeding for Data Bases), que no es mas que una 
tecnología propia de Microsofot para permitir el acceso a datos. OLE DB 
forma parte de la tecnología MDAC (Microsoft Data Access Componentes) de
 microsoft, que divide OLE DB en dos componentes principales, 
consumidores, y proveedores en referencia a como tratan los datos.
Usaremos así los proveedores OLE DB para acceder a cualquier tipo de 
dato, desde una hoja de excell a una base de datos SQL, Oracle, etc…
Para hacer nuestro ejemplo crearemos un simple projecto del tipo WFA 
(Windows Form Application), al que añadiremos cuatro componentes:
- Un Data GridView que llamaremos: dGVExcel
- Un Binding Source que llamaremos: dBSource
- Un Text Box que llamaremos: txBxPath, y que en la propiedad Text tendrá el nombre del excell que queremos abrir, incluyendo el path de búsqueda, en mi caso C:\Users\uge\Desktop\excell1.xlsx
- Y un botón, que al hacer click sobre el abrira el excel indicado en el TextBox mostrando los datos en el DataGridView.
Para poder hacer uso de OLE DB tenemos que añadir a los using del fichero:
using System.Data.OleDb;
Una vez hecho esto hacemos doble click sobre el botón para escribir el código correspondiente, que será como sigue:
Primero necesitamos crear un string que contenga la siguiente info:
1- La configuración de nuestro OLE DB Provider.
 Existen muchos tipos de proveedores implementados, así que tenemos que 
tener claro cual vamos a usar. En nuestro caso es una hoja de excel 
creada con office 2010, así que usaremos como provider Microsoft.ACE.OLEDB.12.0;
En esta página http://www.connectionstrings.com/
 podéis acceder a información relativa a conexiones, no solo para OLE 
DB, sinó también para otras formas de conexion. Para excel podeis 
encontrarlas en http://www.connectionstrings.com/excel
2 – El DataSource del que obtendremos los datos, esto es, nuestro fichero de excel, que sacaremos del campo Text del objeto txBxPatx.
3 – Propiedades del fichero a abrir, es decir las Extended properties. en nuestro caso usaremos Excel 12.0 XMml; HDR=YES. Esta última indica por ejemplo que se añada la primera fila con los títulos de las columnas.
Añadimos al código:
         string connectionString = @”Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=” + txBxPath.Text + @”;
Extended Properties=”"Excel 12.0 Xml;HDR=YES”"”;
Data Source=” + txBxPath.Text + @”;
Extended Properties=”"Excel 12.0 Xml;HDR=YES”"”;
Lo siguiente será preparar una consulta que extraiga los datos del 
provider, la consulta se hace en SQL y el nombre que incluimos será el 
de la Hoja dentro del excel de la que sacar los datos, en mi caso es 
Hoja1, y se le añadirá $ por detrás:
string query = “SELECT * FROM [Hoja1$]“;
Una vez tenemos el string que configura al provider, y la consulta 
que extrae los datos vamos a crear la conexión y extraer los datos hacia
 una tabla que también crearemos en el código:
//Creamos el provider
OleDbConnection excelConnection = new OleDbConnection(connectionString);
//Lo abrimos
excelConnection.Open();
//Creamos un Data Adapter que extraiga los datos necesarios(todos) del provider
OleDbDataAdapter data = new OleDbDataAdapter(query, excelConnection);
//Creamos una tabla
DataTable dTable = new DataTable();
OleDbConnection excelConnection = new OleDbConnection(connectionString);
//Lo abrimos
excelConnection.Open();
//Creamos un Data Adapter que extraiga los datos necesarios(todos) del provider
OleDbDataAdapter data = new OleDbDataAdapter(query, excelConnection);
//Creamos una tabla
DataTable dTable = new DataTable();
//Usando el Data Adapter que tiene los datos seleccionados, rellenamos la tabla.
data.Fill(dTable);
data.Fill(dTable);
// Conectamos el BindingSource con la Tabla.
dBSource.DataSource = dTable;
dBSource.DataSource = dTable;
// Conectamos el DataGridView con el BindingSource
dGVExcel.DataSource = dBSource;
dGVExcel.DataSource = dBSource;
Si compilamos y ejecutamos el proyecto deberíamos obtener una pantalla similar a esta:
A partir de aquí ya podemos trabajar con los datos en nuestra aplicación VS.
 
 
No hay comentarios:
Publicar un comentario