Busca lo que quieras

Subir excel 2003 o 2007 a SQL Server in C#

Hola queridos compañeritos.

Todo esto gracias a otro bloguero! Que invito a que conozcan. 

Bueno, aquí les dejo un código completico para subir un excel a toda velocidad a una tabla creada previamente en SQLServer. La tabla por supuesto, debe coincidir con las columnas que tenga el excel. Así mismo lo que este en cursiva negrita, subrayado es lo que cambiaremos.

Otra cosita, estoy leyendo la cadena de conexión que se encuentra en el web.config. Espero les sirva.




//CODIGO ASPX


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="productos.aspx.cs" Inherits="admin_productos" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Panel ID="pnlActualizar" runat="server" DefaultButton="btnActualizar" style="margin-top: 0px">
            <span>Sube el excel: Crea y actualiza de inmediato productos: </span>
            <asp:FileUpload ID="fuarchivo" runat="server" />    
            <asp:Button ID="btnActualizar" runat="server" Text=">>>" 
                onclick="btnActualizar_Click" />
            <asp:Label ID="lblmensaje" runat="server" Text="..."></asp:Label>
        </asp:Panel>
    </div>
    
    </form>
</body>
</html>




//CODIGO DE .CS


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


//new clases
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Data.Common;


public partial class admin_productos : System.Web.UI.Page
{
    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        if (fuarchivo.HasFile)
        {
            string filepath = Server.MapPath("~/App_Data/" + fuarchivo.FileName);
            if (System.IO.File.Exists(filepath))
            {
                lblmensaje.Text = "El archivo ya existe. Sube un archivo con diferente nombre";
            }
            else
            {
                fuarchivo.SaveAs(filepath);
                lblmensaje.Text = "Archivo subido con nombre: " + fuarchivo.FileName;
                dataupload(filepath);
            }
            
        }
        else
        {
            lblmensaje.Text = "No se ha subido ningún archivo";
        }
    }
    void dataupload(string path)
    {


    // Connection String to Excel Workbook
    string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";
    //string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=YES;\"";//excel 2007


    // Create Connection to Excel Workbook
    using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
        {
        OleDbCommand command = new OleDbCommand("Select * FROM [upload$]", connection);
        connection.Open();
        // Create DbDataReader to Data Worksheet
        using (DbDataReader dr = command.ExecuteReader())
            {
            string sqlConnectionString = ConfigurationManager.ConnectionStrings["NombreConnectionString"].ConnectionString;


            // Bulk Copy to SQL Server
            using (SqlBulkCopy bulkCopy =
            new SqlBulkCopy(sqlConnectionString))
                {
                bulkCopy.DestinationTableName = "tmp_productos";
                bulkCopy.WriteToServer(dr);
                }   
            }
        }
    }


}




Sean felices! :) Y sientanse libres de opinar ;)

1 comentario:

  1. Estoy muy agradecido por este aporte, me salvo la vida :), muchisisisimas Gracias !!!!
    Le daria un 10 por su aporte.

    ResponderEliminar

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)