Autor Tema: carga masiva a sql c# excel  (Leído 5766 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado froilan

  • Sv Member
  • ***
  • Mensajes: 333
carga masiva a sql c# excel
« : diciembre 08, 2011, 03:50:18 pm »
hola tengo un gran problema la cosa es que tengo un sitio web c# con un control filiupload que cargaria un documento de exel y guardaria su contenido en una base de datos con las mismas columnas! he buscado en internet y e encontrado ejemplos pero siempre termino con errores. estoy probando con este codigo y el error que me da es este;
"No se pudo encontrar el archivo ISAM instalable."

les agradeseria si me pueden instruir!!
el codigo que tengo es este:

protected void insertdata_Click(object sender, EventArgs e)
   {
       OleDbConnection oconn = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
"\"" + url + "\"" + ";Extended Properties=Excel 8.0");
       try
       {
           OleDbCommand ocmd = new OleDbCommand("select * from
[Sheet1$]", oconn);
           oconn.Open();
           OleDbDataReader odr = ocmd.ExecuteReader();
           string fname = "";
           string lname = "";
           string mobnum = "";
           string city = "";
           string state = "";
           string zip = "";
           string promedio = "";
           while (odr.Read())
           {
               fname = valid(odr, 0);
               lname = valid(odr, 1);
               mobnum = valid(odr, 2);
               city = valid(odr, 3);
               state = valid(odr, 4);
               zip = valid(odr, 5);
               promedio = valid(odr, 6);
               insertdataintosql(fname, lname, mobnum, city, state,
zip, promedio);
           }
           oconn.Close();
       }
       catch (DataException ee)
       {
           lblmsg.Text = ee.Message;
           lblmsg.ForeColor = System.Drawing.Color.Red;
       }
       finally
       {
           lblmsg.Text = "Data Inserted Sucessfully";
           lblmsg.ForeColor = System.Drawing.Color.Green;
       }
   }
   protected string valid(OleDbDataReader myreader, int stval)//if
any columns are found null then they are replaced by zero
   {
       object val = myreader[stval];
       if (val != DBNull.Value)
           return val.ToString();
       else
           return Convert.ToString(0);
   }
   protected void viewdata_Click(object sender, EventArgs e)
   {
       SqlConnection conn = new SqlConnection("Data
Source=.\\sqlexpress;AttachDbFileName=|DataDirectory|exceltosql.mdf;Trusted_Connection=yes");
       try
       {
           SqlDataAdapter sda = new SqlDataAdapter("select * from emp", conn);
           DataSet ds = new DataSet();
           sda.Fill(ds);
           GridView1.DataSource = ds;
           GridView1.DataBind();
       }
       catch (DataException de)
       {
           lblmsg.Text = de.Message;
           lblmsg.ForeColor = System.Drawing.Color.Red;
       }
       finally
       {
           lblmsg.Text = "Data Shown Sucessfully";
           lblmsg.ForeColor = System.Drawing.Color.Green;
       }
   }
   public void insertdataintosql(string fname, string lname, string
mobnum, string city, string state, string zip, string promedio)
   {
       SqlConnection conn = new SqlConnection("Data
Source=.\\sqlexpress;AttachDbFileName=|DataDirectory|exceltosql.mdf;Trusted_Connection=yes");
       SqlCommand cmd = new SqlCommand();
       cmd.Connection = conn;
       cmd.CommandText = "insert into
emp(carnet,nombres,apellidos,nota1,nota2,nota3,promedio)
values(@fname,@lname,@mobnum,@city,@state,@zip,@promedio)";
       cmd.Parameters.Add("@fname", SqlDbType.NVarChar).Value = fname;
       cmd.Parameters.Add("@lname", SqlDbType.NVarChar).Value = lname;
       cmd.Parameters.Add("@mobnum", SqlDbType.NVarChar).Value = mobnum;
       cmd.Parameters.Add("@city", SqlDbType.NVarChar).Value = city;
       cmd.Parameters.Add("@state", SqlDbType.NVarChar).Value = state;
       cmd.Parameters.Add("@zip", SqlDbType.Int).Value = Convert.ToInt32(zip);
       cmd.Parameters.Add("@promedio", SqlDbType.NVarChar).Value = promedio;
       cmd.CommandType = CommandType.Text;
       conn.Open();
       cmd.ExecuteNonQuery();
       conn.Close();
   }
   protected void deletedata_Click(object sender, EventArgs e)
   {
       SqlConnection conn = new SqlConnection("Data
Source=.\\sqlexpress;AttachDbFileName=|DataDirectory|exceltosql.mdf;Trusted_Connection=yes");
       try
       {
           SqlCommand cmd = new SqlCommand();
           cmd.Connection = conn;
           cmd.CommandText = "delete from emp";
           cmd.CommandType = CommandType.Text;
           conn.Open();
           cmd.ExecuteScalar();
           conn.Close();
       }
       catch (DataException de1)
       {
           lblmsg.Text = de1.Message;
           lblmsg.ForeColor = System.Drawing.Color.Red;
       }
       finally
       {
           lblmsg.Text = "Data Deleted Sucessfully";
           lblmsg.ForeColor = System.Drawing.Color.Red;
       }
   }

ken2

  • Visitante
Re: carga masiva a sql c# excel
« Respuesta #1 : diciembre 08, 2011, 03:53:14 pm »
Según el stack en que linea te da error?

Desconectado Klaus

  • Sv Jr.
  • **
  • Mensajes: 94
Re: carga masiva a sql c# excel
« Respuesta #2 : diciembre 08, 2011, 03:55:31 pm »
leete esto tal vez te sirva
Código: [Seleccionar]
http://www.mvp-access.es/softjaen/articulos/excel/ado_dao_excel.htm

Desconectado froilan

  • Sv Member
  • ***
  • Mensajes: 333
Re: carga masiva a sql c# excel
« Respuesta #3 : diciembre 08, 2011, 03:56:54 pm »
quie me da el error


 oconn.Open();

Desconectado froilan

  • Sv Member
  • ***
  • Mensajes: 333
Re: carga masiva a sql c# excel
« Respuesta #4 : diciembre 08, 2011, 08:26:33 pm »
tambien tengo esta otra opcion siempre con el mismo error en esta parte del codigo

daDatos.Fill(dsCargaMasiva);

  protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            //Declaramos una variable del tipo string que guardar  la carpeta en el servidor
            //donde vamos a almacenar los archivos cargados y le sumaremos el nombre del archivo
            //cargado para tener el url completo y poder salvar
            string url = Server.MapPath(@"WebSite2");
            url += FileUpload1.FileName;
            FileUpload1.SaveAs(url);
            //Declaramos un nuevo objeto del tipo DataSet
            DataSet dsCargaMasiva = new DataSet();
            //Ahora vamos a construir nuestra cadena de conexion a la hoja de excel
            //con el nombre del archivo seleccionado

            OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "\"" + url + "\"" + ";Extended Properties=Excel 12.0 Xml; HDR = Yes;IMEX=1");
           

            //Utilizaremos un objeto del tipo OleDbDataAdapter ya que este est  pensado para or¡genes de datos
            //diferentes de BD SQL u Oracle
            OleDbDataAdapter daDatos = new OleDbDataAdapter("Select * From estudiantes ", cn);
            daDatos.Fill(dsCargaMasiva);
            SqlConnection Connection = new SqlConnection("Data Source = DESKTOP; Initial Catalog =estudiantes_1; Integrated Security=True");
            Connection.Open();
            //Declaramos una nueva instancia de la Clase SqlBulkCopy, esta se encargara
            //de hacer la copia masiva
            SqlBulkCopy BC = new SqlBulkCopy(Connection);

            //Tabla Destino
            BC.DestinationTableName = "dbo.estudiantes";

            //Tabla Origen en este caso la Table[0] del DataSet
            BC.WriteToServer(dsCargaMasiva.Tables[0]);

            Connection.Close();
            lblmsg.Text = "Carga Con Exito!";
        }
    }

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: carga masiva a sql c# excel
« Respuesta #5 : diciembre 08, 2011, 09:03:16 pm »
Me suena esto del ISAM... Pero hac mucho mucho tiempo..... Creo yo q lo veia alla por las versiones de VS 6.0, cuando ni existia la plataforma .NET.
Mira y no has googleado un poco q es eso del ISAM?? A mi si m hac q es algun proveedor de conexiones q tuvistes q haber instalado, yo tengo una leve remota idea q al instalar el VS 6.0, en ciertas cosas habia q irse a los detalles de la herramienta q uno instabala e instalar los proveedores de datos...

Te recomendaria q googlearas un poco y averigues q es el ISAM y mas con tu version de VS
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>