Pregunta

Im lectura de un archivo xlsx como una base de datos para hacer algún trabajo

i di cuenta de que su lectura de algunos campos realmente en como int y la fecha a pesar de que yo sólo quiero todo para venir en forma de texto. ¿Hay alguna forma para desactivar esta característica?

siguiente código

(no dude en señalar cualquier cosa que podría estar haciendo mejor con mi código también)

  private DataSet ExceltoDT(OpenFileDialog dialog)
    {
        try
        {
            string connst = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dialog.FileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO\";";
            string sheet = "Sheet1$";
            string strSQL = "SELECT * FROM [" + sheet + "]";
            //string Table = "081710";
            OleDbConnection xlsdb = new OleDbConnection(connst);
            xlsdb.Open();
            OleDbDataAdapter adp = new OleDbDataAdapter(strSQL, xlsdb);
            DataSet ds2 = new DataSet();
            adp.Fill(ds2);


            adp.Dispose();
            xlsdb.Close();
            xlsdb.Dispose();

            return ds2;
        }
        catch (StackOverflowException stack_ex2)
        {
            MessageBox.Show("(2007 Excel file) Stack Overflowed!" + "\n" + stack_ex2.Message);
            return null;

        }
        catch (OleDbException ex_oledb2)
        {
            MessageBox.Show("An OleDb Error Thrown!" + "\n" + ex_oledb2.Message);
            return null;
        }
    }
¿Fue útil?

Solución

Añadir un ' (apóstrofe) delante de cada valor de la celda. Que le dirá Excel "Tratar esto como texto, incluso cuando parece que un número / fecha / lo que sea".

No es lo que quiere? Entonces no utilice el conector DB porque está demasiado estropeado. Se dará cuenta de que cuando se tiene una columna con las células que se mezclan. En ese caso, el conductor DB se verá en las 8 primeras filas y establecer el tipo de la mayoría de los tipos que encuentra y NULL cambio de nada en esa columna que no encaja. Puede arreglar eso por el pirateo de su registro.

En lugar de utilizar la API OLE para abrir el libro y luego comenzar a partir de ahí, la lectura fila por fila, convirtiendo los datos como sea necesario (esto larga lista de mensajes debe contener sobre todas las formas posibles de acceso Excel desde C #, además de todos los errores y problemas que puede encontrar).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top