C# Cargar Datos Desde Hoja Excel a Base de Datos MSSQL


Monetize your website traffic with yX Media
En muchas ocasiones, cuando creamos aplicaciones que manejan bases de datos de tipo SQL, el cliente nos pregunta si no podemos cargar los datos de la base de datos desde una Hoja de Cálculo Excel para agilizar la carga de datos, ya que él la tiene en ese formato.

Nuestras aplicaciones pueden tener como valor agregado la capacidad de poder importar datos desde Excel.

Este es precisamente el código que les traigo a continuación en C#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
//Agregar referencia a esta DLL si va cargar los datos de la tabla de Excel a SQL Server
using dBData;


namespace ImportarExcel
{
    public partial class FrmImportar : Form
    {
        public FrmImportar()
        {
            InitializeComponent();
        }

        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;
                string hoja = "Plan1"; //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

                DGV1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; //Se ajustan las
                //columnas al ancho del DataGridview para que no quede espacio en blanco (opcional)
            }

        }

        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;";
            //string cadenaConexionArchivoExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + archivo + "';Extended Properties=Excel 8.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 dataAdapter
                    dataSet = new DataSet(); // Creamos la instancia del objeto DataSet
                    dataAdapter.Fill(dataSet, hoja);//Llenamos el dataset
                    DGV1.DataSource = dataSet.Tables[0]; //Le asignamos al DataGridView el contenido del dataSet
                    conexion.Close();//Cerramos la conexion
                    DGV1.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);
                    MessageBox.Show(ex.ToString());
                }
            }
        }

        private void BotCargarDatos_Click(object sender, EventArgs e)
        {
            string CC = @"Data Source=NombreServidor;Initial Catalog=NombreBaseDeDatos;Persist Security Info=True;User ID=Usuario;Password=password";
            for (int i = 0; i < DGV1.Rows.Count; i++)
            {
                //Si va a insertar los datos:
                //Datos.Insertar(CC, "NombreTabla", "Contrato, Filial", "'" + DGV1["Contrato",i].ToString() + "', '" + DGV1["Filial",i].ToString() + "'"
                
                //Si va a actualizar los datos
                string SET = "Contrato = '" + DGV1["Contrato", i].Value.ToString().Trim() + "', Filial = '" + DGV1["Filial", i].Value.ToString().Trim() + "'";
                string Condicion = "Contenedor = '" + DGV1["Container", i].Value.ToString().Trim() + "' AND Activo = 'True' AND BCampo4 = 'False' OR BCampo4 IS NULL";
                Datos.Actualizar(CC, "NombreTabla", SET, Condicion);
                if (Datos.Mensaje != "")
                {
                    MessageBox.Show(Datos.Mensaje);
                }
            }
            MessageBox.Show("Finalizado");
            
        }

    }
}



Código completo listo para descargar aqui:

 Cargar datos de Excel a SQL
Enlace alternativo:

 Cargar datos de Excel a SQL

Pack de 60 Libros y Tutoriales Arduino y Raspberry Pi


Monetize your website traffic with yX Media
Pack de más de 60 Libros y Tutoriales de Arduino, Netduino, Raspberry Pi, Pin-Out Arduino.

Contenido de libros del Pack:

01 - Learning Processing - Daniel Shiffman
02 - iOS Sensor Apps with Arduino - Alasdair Allan
03 - Internet of Things with Arduino - Marco Schwartz
04 - Home Security Projects for Arduino - Tim Rustige
05 - Getting Started with RFID - Tom Igoe
06 - Getting Started with Windows Remote Arduino - Agus Kurniawan
07 - Getting Started with Arduino - Massimo Banzi
08 - Flowcode + Arduino - José Manuel Ruiz Gutiérrez
09 - C Programming for Arduino - Julien Bayle
10 - Beginning NFC (Near Field Communication With Arduino, Android & Phonegap) - Tom Igoe, Don Coleman & Brian Jepson
11 - Connecting Arduino. Programming and Networking with the Ethernet Shield - Bob Hammel
12 - Building Wireless Sensor Networks - Robert Faludi
13 - SoapBox Snap - Como convertir Arduino en un PLC - José Manuel Ruiz Gutiérrez
14 - Arduino Basic Connections - Recopilación de conexiones de diferentes componentes y sensores con Arduino
15 - WinFACT + Arduino - José Manuel Ruiz Gutiérrez
16 - The Hands-On Arduino Yún. Manual Lab - Agus Kurniawan
17 - Scratch 2.0 + Arduino Snap! + Arduino - José Manuel Ruiz Gutiérrez
18 - Rhino-Grasshopper-Firefly + Arduino - José Manuel Ruiz Gutierrez
19 - Raspberry Pi Home Automation with Arduino - Andrew K. Dennis
20 - Programming Arduino Next Steps - Simon Monk
21 - Programming Your Home - Automate with Arduino, Android, and Your Computer - Mike Riley
22 - A Designer Guide to Processing  Arduino, and Open Frameworks - Joshua Noble
23 - Entornos Gráficos para la Programación Plataforma Open Hardware Arduino - José Manuel Ruiz Gutiérrez
24 - Professional Android Open Accessory Programming with Arduino - Andreas Goransson, David Cuartielles Ruiz
25 - Pro Arduino - Rick Anderson and Dan Cervo
26 - Practicas con Arduino Nivel 1 - José Manuel Ruiz Gutiérrez
27 - Practicas Arduino Processing - José Manuel Ruiz Gutiérrez
28 - Practical AVR Microcontrollers - Alan Trevennor
29 - Practical Arduino. Cool Projects for Open Hardware - Jonathan Oxer - Hugh Blemings
30 - Practical Arduino Engineering - Harold Timmis
31 - Manual de Programación Arduino - José Manuel Ruiz Gutierrez
32 - Pure Data + Arduino Interaction - José Manuel Ruiz Gutierrez
33 - Open Softwear - Fashionable prototyping and wearable computing using the arduino - Tony Olsson, David Gaetano, Jonas Odhner, Samson Wiklund
34 - MintDuino - James Floyd Kelly & Marc de Vinck
35 - Making Things Talk 2 - Tom Igoe
36 - Making Things Talk - Tom Igoe
37 - Making Things See - Greg Borenstein
38 - Getting Started with Intel Galileo - Matt Richardson
39 - Make: Lego and Arduino Projects - John Baichtal, Matthew Beckler & Adam Wolf
40 - Make An Arduino Controlled Robot - Michael Margolis 
41 - Arduino Succinctly - Marko Svaljek
42 - Arduino Programing Notebook Español - Brian w. Evans
43 - Getting Started with Netduino - Chris Walker
44 - Bus I2C de Arduino - José Manuel Ruiz Gutiérrez
45 - Beginning Android ADK with Arduino - Mario Bohmer
46 - Atmospheric Monitoring With Arduino - Patrick Di Justo and Emily Gertz
47 - Arduino + Pure Data - José Manuel Ruiz Gutiérrez
48 - Arduino Microcontroller Processing for Everyone Part I - Steven F. Barrett
49 - Arduino Workshop. A Hands-On Introduction with 65 Projects - John Boxall
50 - Arduino Starters Kit Manual - A Complete Beginners Guide to the Arduino - Mike McRoberts
51 - Arduino Sketches: Tools and Techniques for Programming Wizardry - James A. Langbridge
52 - Arduino Robotics - John-David Warren, Josh Adams, Harald Molle
53 - Projects to Save the World - Brian Evans
54 - Arduino Projects For Dummies - Brock Craft
55 - Arduino Networking - Marco Schwartz
56 - Arduino Meets Linux - Bob Hammel
57 - Arduino Internals - Dale Wheat
58 - Arduino in Action - Martin Evans, Joshua Noble, Jordan Hochenbaum
59 - Arduino by Example - Adith Jagadish Boloor
60 - Referencia del lenguaje utilizado para programar placas Arduino
61 - Beginning Arduino - Michael McRoberts
62 - Arduino – Curso práctico de formación - Óscar Torrente Artero
63 - Raspberry Pi Projects for the Evil Genius - Donald Norris
64 - 30 Proyectos Con Arduino - Simon Monk



 Pack de 60 Libros y Tutoriales Arduino

Enlace Alternativo:

 Pack de 60 Libros y Tutoriales Arduino y Raspberry Pi