none
Problema al cargar Excel al GridView en formato de texto RRS feed

  • Pregunta

  • Hola, tengo un excel que lo cargo a un GridView, pero al momento de mostrarlo el campo no sale en el formato adecuado, a pesar de en la columna es de tipo texto. Los que tienen el triangulo verde se muestran de forma correcta pero los que no me los considera como número y no los muestra correctamente.

    Y en el grid view se muestran así:

    ¿Cual sería la solución para que me muestre en el formato correcto?

    Aqui les paso el código :

            private void Import_To_Grid(string FilePath, string Extension, string isHDR)
            {
                string conStr = "";
                //switch (Extension)
                //{
                    //case ".xls":
                        conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=yes;imex=1;ImportMixedTypes=Text'";
                        //ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                    //    break;
                    //case ".xlsx":
                    //    conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'";
                    //    //ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                    //    break;
                    //default:
                    //    {
                    //        conStr = "Provider=Microsoft.ACE.Oledb.12.0; data source= {0};Extended properties=Excel 12.0 Xml;HDR={1};ImportMixedTypes=Text";
                    //        break;
                    //    }
    
                //}
    
                //conStr = "Provider=Microsoft.Jet.Oledb.4.0; data source= " + FileUpload1.FileName + ";Extended properties='Excel 8.0;hdr=yes;imex=1;ImportMixedTypes=Text'";
    
    
    
                        conStr = String.Format(conStr, FilePath, isHDR);
                        OleDbConnection connExcel = new OleDbConnection(conStr);
                        OleDbCommand cmdExcel = new OleDbCommand();
                        OleDbDataAdapter oda = new OleDbDataAdapter();
                        DataTable dt = new DataTable();
                        cmdExcel.Connection = connExcel;
    
                        //Get the name of First Sheet
                        connExcel.Open();
                        DataTable dtExcelSchema;
                        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                        connExcel.Close();
    
                        //Read Data from First Sheet
                        connExcel.Open();
                        cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
                        oda.SelectCommand = cmdExcel;
                        oda.Fill(dt);
                        connExcel.Close();
    
    
                        //Bind Data to GridView
                        grdListExcel.Caption = Path.GetFileName(FilePath);
                        grdListExcel.DataSource = dt;
                        grdListExcel.DataBind();
                        DataSourceExcel = dt;
    
                        //Limpiar Grilla  inconsistencias
                        grdListInconsistencias.DataSource = null;
                        grdListInconsistencias.DataBind();
                        hdnIndexTab.Value = "0";
            }
    

    Saludos


    Juan Collazos

    jueves, 8 de junio de 2017 16:54

Respuestas

  • Hola , por lo que tengo entendido esos componentes de conectividad para excel tratan de inferir el tipo de todas las celdas de acuerdo a  los valores de las primeras 8 filas del excel, se que esto se puede cambiar en el regedit en el typeguessrows


    Por otro lado el triángulo  verde indica que hay algún error con las fórmulas de la celda, deberías fijarte en arreglar ello, deberías convertirlo a número y cuando ya no te salga ese triangulo pasarlo al formato que consideres conveniente.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.



    jueves, 8 de junio de 2017 17:13