none
VALORES INVÁLIDOS EN UN DATAGRIDVIEW RRS feed

  • Pregunta

  • hola amigos del foro, estoy haciendo una aplicación en VB.NET.

    el problema que tengo es el siguiente, estoy cargando una hoja de Excel en un datagridview una vez cargado edito unas celdas del datagridview para una mejor presentación a los usuarios.

    pero me genera unos errores donde dice asi:

     

    aquí esta el código que utilizo:

     Dim conexion As New OleDbConnection
            Dim comando As New OleDbCommand
            Dim adaptador As New OleDbDataAdapter
            Dim dsexcel As New DataSet
            Dim ExcelPath As String = ruta.Text.ToLower()
            Dim hoja As String = ""
            ' Dim num As Integer
            Dim extension As String = ""

            hoja = data_rutas.Text


            If extension = ".xls" Then
                conexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelPath & "; Extended Properties= ""Excel 8.0;HDR=YES; IMEX=1"""
            Else
                conexion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelPath & ";Extended Properties=" & Chr(34) & "Excel 12.0 Xml;HDR=YES;IMEX=1" & Chr(34)
            End If

            conexion.Open()
            comando.CommandText = "SELECT * FROM [Rutas$]"
            comando.Connection = conexion
            adaptador.SelectCommand = comando
            conexion.Close()
            adaptador.Fill(dsexcel, "excel")
            data_rutas.DataSource = dsexcel.Tables(0)
            data_rutas.ColumnHeadersVisible = False
            data_rutas.CellBorderStyle = DataGridViewCellBorderStyle.None

    En unas celdas de mi datagridview quiero editarlo y colocar unos nombres pero me genera el error ahí mostrado, si coloco números si me deja, como puedo solucionar este problema, les agradecería su ayuda. Gracias


    jueves, 17 de enero de 2013 6:37

Respuestas

  • Te recomiedo que no asignes directamente al grid el Datasource obtenido con los datos de excel sino que crees un Tabla con el tipo de dato que corresponde a cada celda y despues esta tabla la asignes al grid algo como

     conexion.Open()
            comando.CommandText = "SELECT * FROM [Rutas$]"
            comando.Connection = conexion
            adaptador.SelectCommand = comando
            conexion.Close()
            adaptador.Fill(dsexcel, "excel")

    Dim Table as Datatable

    with Table.Columns

    .Add("Campo1",GetType(Integer))

    .Add("Campo2",GetType(String))

    .Add("Campo3",GetType(Boolean))

    End With

    Dim rowTable as DataRow

    For Each Row as DataRow in dsexcel.Tables(0).Rows

    rowTable = Table.NewRow()

    rowTable("Campo1") = CTye(Row("Campo1"),Integer)

    rowTable("Campo2") = CTye(Row("Campo2"),String)

    rowTable("Campo3") = CTye(Row("Campo3"),Boolean)

    Table.Rows.Add(rowTable) End For

    data_rutas.DataSource = Table

            data_rutas.ColumnHeadersVisible = False
            data_rutas.CellBorderStyle = DataGridViewCellBorderStyle.None

    • Marcado como respuesta juanmh jueves, 31 de enero de 2013 14:23
    domingo, 27 de enero de 2013 4:35