none
Leer Datos de XLS o XLSX en GridView RRS feed

  • Pregunta

  • que tal Amigos tengo un pequeño problemita!

    Necesito 

    1.- Subir Archivo tipo Excel (fileupload).

    2.-Leer Los datos en un grid view

    3.-insertarlos en una tabla de mysql ( pero al momento de insertar me manda nulos los campos del grid)

    en formato mvc 

    *capa datos

    *capa negocio

    *codebhind

     podrian ayudarme con eso ? 

    Y navegue pero el insert  lo dejan en el codbhind 

    • Cambiado Joyce_AC lunes, 26 de diciembre de 2016 19:07
    viernes, 23 de diciembre de 2016 6:46

Todas las respuestas

  • hola

    Pero cual seria el problema porque planteas varios temas muy diferentes, ademas es asp.net mvc lo que estas usando?

    >>Subir Archivo tipo Excel (fileupload).

    How to Upload Files in ASP.NET MVC

    se usa el <input type="file"> y en el action lo tomas con el HttpPostedFileBase

    >>Leer Los datos en un grid view

    en asp.net mvc no existe el gridview

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Joyce_AC viernes, 23 de diciembre de 2016 21:30
    • Votado como útil Joyce_AC lunes, 26 de diciembre de 2016 17:27
    viernes, 23 de diciembre de 2016 14:50
  • Hola que tal, muchas gracias por responder.

    En si tengo esto!

    En mi ClaseDL

    public int InsertarXLSDL(string ASESOR, int FOLIONC)
                {

                MySqlConnection con = new MySqlConnection();
                con.ConnectionString = "SQLTSWDesarrollo";
                MySqlCommand cmd = new MySqlCommand("sp_Agregar_Ln", con);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new MySqlParameter() { Value = ASESOR, ParameterName = "@ASESOR", MySqlDbType = MySqlDbType.VarChar, Size = 30 });
                cmd.Parameters.Add(new MySqlParameter() { Value = FOLIONC, ParameterName = "@FOLIONC", MySqlDbType = MySqlDbType.VarChar, Size = 15 });

                int Cont = 0;
                try
                    {
                    con.Open();
                    Cont = cmd.ExecuteNonQuery();
                    con.Close();
                    return Cont;
                    }
                catch (Exception ex)
                    {
                    con.Close();
                    throw new ApplicationException("Hubo un error agregando el usuario " + ex.Message);
                    }
                return Cont;

                }

    En mi BL

    public void InsertarXLSBL(ListanegraDL P)
                {
                int cant = new ListanegraDL().InsertarXLSDL(P.ASESOR, P.FOLIONC, P.PROSPECTID, P.NOMBRE_CLIENTE, P.APPATERNO_CLIENTE, P.APMATERNO_CLIENTE, P.NOMBRE_CONYUGE, P.APPATERNO_CONYUGE, P.APMATERNO_CONYUGE, P.CAMPANIA, P.RAZON, P.TipoConsulta);
                if (cant != 1)
                    {
                    throw new ApplicationException("No se Agregaron los datos");
                    }

                }

    En mi CodeBhind

     private void FillGrid(string FilePath, string Extension, string isHDR)
                {
                try
                    {
                    string conStr = "";
                    switch (Extension)
                        {
                        case ".xls": //Excel 97-03
                            conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                            break;
                        case ".xlsx": //Excel 07
                            conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                            break;
                        }
                    conStr = String.Format(conStr, FilePath, isHDR);
                    OleDbConnection connExcel = new OleDbConnection(conStr);
                    OleDbCommand cmdExcel = new OleDbCommand();
                    OleDbDataAdapter oda = new OleDbDataAdapter();

                    cmdExcel.Connection = connExcel;

                    //Get the name of First Sheet
                    connExcel.Open();
                    DataTable dtExcelSchema;
                    DataTable dt = new DataTable();
                    dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                    connExcel.Close();


                    GridView1.DataBind();
                    GridView1.Caption = Path.GetFileName(FilePath);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                    }
                catch (Exception)
                    {

                    lblError.Visible = true;
                    lblError.Text = "Ocurrio un Error al subir el archivo";
                    }

                }

     protected void PageIndexChanging(object sender, GridViewPageEventArgs e)
                {
                string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
                string FileName = GridView1.Caption;
                string Extension = Path.GetExtension(FileName);
                string FilePath = Server.MapPath(FolderPath + FileName);

                FillGrid(FilePath, Extension, rbHDR.SelectedItem.Text);
                GridView1.PageIndex = e.NewPageIndex;
                GridView1.DataBind();
                }
    protected void btnSave_Click(object sender, EventArgs e, ListanegraBL P)
                {
                try
                    {
                    ListanegraBL BUssines = new ListanegraBL();
                    BUssines.InsertarXLSBL(P);

                    foreach (GridViewRow gvDatos in GridView1.Rows)
                        {
                        //DataRowView dvItem = (DataRowView)gvDatos.DataItem;               
                        P.ASESOR = gvDatos.Cells[0].Text;
                        P.FOLIONC = Convert.ToInt32(gvDatos.Cells[1].ToString().Trim());
                        P.PROSPECTID = Convert.ToInt32(gvDatos.Cells[2].ToString().Trim());
                        P.NOMBRE_CLIENTE = gvDatos.Cells[3].Text;
                        P.APPATERNO_CLIENTE = gvDatos.Cells[4].Text;
                        P.APMATERNO_CLIENTE = gvDatos.Cells[5].Text;
                        P.NOMBRE_CONYUGE = gvDatos.Cells[6].Text;
                        P.APPATERNO_CONYUGE = gvDatos.Cells[7].Text;
                        P.APMATERNO_CONYUGE = gvDatos.Cells[8].Text;
                        P.CAMPANIA = Convert.ToInt32(gvDatos.Cells[9].ToString().Trim());
                        P.RAZON = gvDatos.Cells[10].Text;
                        P.TipoConsulta = Convert.ToInt32(gvDatos.Cells[11].ToString().Trim());
                        }
                    }
                catch (Exception ex)
                    {
                    lblError.ForeColor = System.Drawing.Color.Red;
                    lblError.Visible = true;
                    lblError.Text = "Ocurrio un Error al subir el archivo";
                    }

                lblError.ForeColor = System.Drawing.Color.Red;
                lblError.Visible = true;
                lblError.Text = "Se agrego el archivo correctamente";
                }


    • Editado Switchmx sábado, 24 de diciembre de 2016 0:25
    sábado, 24 de diciembre de 2016 0:24
  • Hola que tal, muchas gracias por responder.

    En si tengo esto!

    En mi ClaseDL

    public int InsertarXLSDL(string ASESOR, int FOLIONC)
                {

                MySqlConnection con = new MySqlConnection();
                con.ConnectionString = "SQLTSWDesarrollo";
                MySqlCommand cmd = new MySqlCommand("sp_Agregar_Ln", con);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new MySqlParameter() { Value = ASESOR, ParameterName = "@ASESOR", MySqlDbType = MySqlDbType.VarChar, Size = 30 });
                cmd.Parameters.Add(new MySqlParameter() { Value = FOLIONC, ParameterName = "@FOLIONC", MySqlDbType = MySqlDbType.VarChar, Size = 15 });

                int Cont = 0;
                try
                    {
                    con.Open();
                    Cont = cmd.ExecuteNonQuery();
                    con.Close();
                    return Cont;
                    }
                catch (Exception ex)
                    {
                    con.Close();
                    throw new ApplicationException("Hubo un error agregando el usuario " + ex.Message);
                    }
                return Cont;

                }

    En mi BL

    public void InsertarXLSBL(ListanegraDL P)
                {
                int cant = new ListanegraDL().InsertarXLSDL(P.ASESOR, P.FOLIONC, P.PROSPECTID, P.NOMBRE_CLIENTE, P.APPATERNO_CLIENTE, P.APMATERNO_CLIENTE, P.NOMBRE_CONYUGE, P.APPATERNO_CONYUGE, P.APMATERNO_CONYUGE, P.CAMPANIA, P.RAZON, P.TipoConsulta);
                if (cant != 1)
                    {
                    throw new ApplicationException("No se Agregaron los datos");
                    }

                }

    En mi CodeBhind

     private void FillGrid(string FilePath, string Extension, string isHDR)
                {
                try
                    {
                    string conStr = "";
                    switch (Extension)
                        {
                        case ".xls": //Excel 97-03
                            conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                            break;
                        case ".xlsx": //Excel 07
                            conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                            break;
                        }
                    conStr = String.Format(conStr, FilePath, isHDR);
                    OleDbConnection connExcel = new OleDbConnection(conStr);
                    OleDbCommand cmdExcel = new OleDbCommand();
                    OleDbDataAdapter oda = new OleDbDataAdapter();

                    cmdExcel.Connection = connExcel;

                    //Get the name of First Sheet
                    connExcel.Open();
                    DataTable dtExcelSchema;
                    DataTable dt = new DataTable();
                    dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                    connExcel.Close();


                    GridView1.DataBind();
                    GridView1.Caption = Path.GetFileName(FilePath);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                    }
                catch (Exception)
                    {

                    lblError.Visible = true;
                    lblError.Text = "Ocurrio un Error al subir el archivo";
                    }

                }

     protected void PageIndexChanging(object sender, GridViewPageEventArgs e)
                {
                string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
                string FileName = GridView1.Caption;
                string Extension = Path.GetExtension(FileName);
                string FilePath = Server.MapPath(FolderPath + FileName);

                FillGrid(FilePath, Extension, rbHDR.SelectedItem.Text);
                GridView1.PageIndex = e.NewPageIndex;
                GridView1.DataBind();
                }
    protected void btnSave_Click(object sender, EventArgs e, ListanegraBL P)
                {
                try
                    {
                    ListanegraBL BUssines = new ListanegraBL();
                    BUssines.InsertarXLSBL(P);

                    foreach (GridViewRow gvDatos in GridView1.Rows)
                        {
                        //DataRowView dvItem = (DataRowView)gvDatos.DataItem;               
                        P.ASESOR = gvDatos.Cells[0].Text;
                        P.FOLIONC = Convert.ToInt32(gvDatos.Cells[1].ToString().Trim());
                        P.PROSPECTID = Convert.ToInt32(gvDatos.Cells[2].ToString().Trim());
                        P.NOMBRE_CLIENTE = gvDatos.Cells[3].Text;
                        P.APPATERNO_CLIENTE = gvDatos.Cells[4].Text;
                        P.APMATERNO_CLIENTE = gvDatos.Cells[5].Text;
                        P.NOMBRE_CONYUGE = gvDatos.Cells[6].Text;
                        P.APPATERNO_CONYUGE = gvDatos.Cells[7].Text;
                        P.APMATERNO_CONYUGE = gvDatos.Cells[8].Text;
                        P.CAMPANIA = Convert.ToInt32(gvDatos.Cells[9].ToString().Trim());
                        P.RAZON = gvDatos.Cells[10].Text;
                        P.TipoConsulta = Convert.ToInt32(gvDatos.Cells[11].ToString().Trim());
                        }
                    }
                catch (Exception ex)
                    {
                    lblError.ForeColor = System.Drawing.Color.Red;
                    lblError.Visible = true;
                    lblError.Text = "Ocurrio un Error al subir el archivo";
                    }

                lblError.ForeColor = System.Drawing.Color.Red;
                lblError.Visible = true;
                lblError.Text = "Se agrego el archivo correctamente";
                }

     en mi presentacion  ovio el  grid  con las columnas y los botones  pero el grid regresa  null todo y no pasa  a mi (BL)

    sábado, 24 de diciembre de 2016 0:26
  • ok entonces cual seria el problema?

    nos muestras el codigo y veo que accedes al excel usando ado.net pero no entiendo que tiene que ver el GetOleDbSchemaTable() ?

    Reading and Writing Excel Spreadsheets Using ADO.NET C# DbProviderFactory

    se supone que hagas un SELECT al sheet del wxcel para recuperar los datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 24 de diciembre de 2016 3:31