Blogger news

22:08
2
En esta ocasión veremos como podemos manipular datos en un archivo de Excel utilizando OleDB.

OleDb se encuentra en el namespace System.Data.OleDb, con esta clase podremos tener acceso a un origen de dato Ole Db, con el cual podremos realizar operaciones de selección, inserción y actualización. Lo que no podemos realizar es una eliminación, ya que el Jet OLE DB Provider no lo permite.

La cadena de conexion que utilizaremos quedara asi:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Libro1.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=0

El Data Source debera de contener la ruta completa donde se ecuentra el archivo de Excel, asi como su nombre y extensión.
Extended Properties, El proveedor OLEDB, admite los siguientes tipos de bases de datos Microsoft Excel:
Excel 3.0
Excel 4.0
Excel 5.0
Excel 8.0
HDR, con esta propiedad indicamos si nuestro archivo contiene encabezados.
IMEX, indica si respeta los tipos de datos de las columnas en el archivo.


El ejemplo del archivo de Excel sería algo asi como:


Ahora el codigo de ejemplo:

using System;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using System.Text;

namespace OleDB_Excel
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet z_varodtsNombres = new DataSet(); //DataSet donde almacenamos el resultado del Select
            DO_Excel z_varocioConexionExcel = new DO_Excel(); //Clase para la conexion al archivo de Excel

            //Ejemplo de Select
            z_varodtsNombres = z_varocioConexionExcel.z_metuExecQuery("SELECT NOMBRE, EDAD FROM [Hoja1$]");

            //Ejemplo de Insert
            z_varocioConexionExcel.z_metuExecNonQuery("INSERT INTO [Hoja1$] (NOMBRE, EDAD) VALUES (\"LAU\", \"30\")");

            //Ejemplo de Update
            z_varocioConexionExcel.z_metuExecNonQuery("UPDATE [Hoja1$] SET EDAD = \"15\" WHERE NOMBRE = \"LAU\"");
        }

        
    }

    public class DO_Excel
    {
        public DataSet z_metuExecQuery(string z_parstrQueryString)
        {
            string z_varostrConnectionString;
            DataSet z_varodtsSetDeDatos;
            z_varodtsSetDeDatos = new DataSet();

            z_varostrConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Libro1.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\"";

            try
            {
                using (OleDbConnection z_varocioSqlConnection = new OleDbConnection(z_varostrConnectionString))
                {
                    if (z_varocioSqlConnection != null)
                    {
                        OleDbCommand z_varocioSqlCommand = new OleDbCommand();

                        z_varocioSqlCommand.CommandTimeout = 0;
                        z_varocioSqlCommand.CommandText = z_parstrQueryString;
                        z_varocioSqlCommand.Connection = z_varocioSqlConnection;

                        using (OleDbDataAdapter z_varocioSqlDataAdapter = new OleDbDataAdapter(z_varocioSqlCommand))
                        {
                            z_varocioSqlDataAdapter.Fill(z_varodtsSetDeDatos);
                        }
                    }
                }
            }
            catch
            {
                throw;
            }
            return z_varodtsSetDeDatos;
        }
        public void z_metuExecNonQuery(string z_parstrNoQueryString)
        {
            string z_varostrConnectionString;

            z_varostrConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Libro1.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\"";

            try
            {
                using (OleDbConnection z_varocioSqlConnection = new OleDbConnection(z_varostrConnectionString))
                {
                    if (z_varocioSqlConnection != null)
                    {
                        OleDbCommand z_varocioSqlCommand = new OleDbCommand();

                        z_varocioSqlConnection.Open();
                        z_varocioSqlCommand.CommandTimeout = 0;
                        z_varocioSqlCommand.CommandText = z_parstrNoQueryString;
                        z_varocioSqlCommand.Connection = z_varocioSqlConnection;

                        z_varocioSqlCommand.ExecuteNonQuery();
                        z_varocioSqlConnection.Close();
                    }
                }
            }
            catch
            {
                throw;
            }
        }
    }
}



Espero que les sirva...... Ailas......

2 comentarios:

  1. muy buen aporte ahora es cuestion de hallar algo en que aplicar este codigo en la chamba.

    ResponderEliminar
  2. hola oye en el metodo select no me sale como es que puedes ver todos los registros de excel

    ResponderEliminar