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 ;)
Estoy muy agradecido por este aporte, me salvo la vida :), muchisisisimas Gracias !!!!
ResponderEliminarLe daria un 10 por su aporte.