Problema con importar de excel a vb.net
Publicado por mario (15 intervenciones) el 05/12/2017 20:26:19
Hola, gracias de antemano, tengo un problema hay un archivo en excel que lo importo bien a un datagridview, pero el problema es cuando la columna que lleva valores numérico mayores a 1 millón, ese valor me lo deja vacío la verdad no tengo idea que será.
Este es el código
Gracias de antemano por la ayuda
Este es el código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
'Este método extrae la información de excel
Public Function ObtenerDatosExcel(ruta As String, hoja As String, rango As String) As DataTable
'Cadena de conexión con el libro de Excel indicado.
Dim cadenaConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=NO';" &
"Data Source=" & ruta
'Declarar una objeto OleDbConnection
Using cnn As New OleDbConnection(cadenaConexion)
'Crear el comando que vamos a ejecutar
Dim cmd As OleDbCommand = cnn.CreateCommand()
'Indicar la consulta SQL de selección que vamos a ejecutar.
cmd.CommandText = String.Format("SELECT * FROM [{0}${1}]", hoja, rango)
' Crear el adaptador de datos al que le pasaremos el comando.
Dim da As New OleDbDataAdapter(cmd)
' Creamos un objeto DataTable temporal.
Dim dtTemp As New DataTable("TestTable")
' Rellenamos el objeto DataTable temporal con todas las
' filas existentes en el rango de Excel especificado,
' estén o no en blanco.
da.Fill(dtTemp)
' Clonamos el objeto DataTable.
Dim dt As DataTable = dtTemp.Clone()
' Seleccionamos todas las filas existentes en el objeto DataTable,
' se traten de filas en blanco o no.
Dim rows As DataRow() = dtTemp.Select()
For index As Integer = 0 To rows.Count - 1
' Referenciar la fila
Dim row As DataRow = rows(index)
If (row.Item(0) Is DBNull.Value) Then
' Si el valor del primero campo (F1) es NULL, se tratará
' de la primera fila en blanco existente, por lo que
' abandonamos el bucle.
Exit For
End If
' Importar la filas válidas al objeto DataTable clonado.
dt.ImportRow(row)
Next
' Devolvemos el objeto DataTable clonado.
Return dt
End Using
End Function
'Este método ubica la información en el datagriview
Public Function rellenaDGV(dgv As DataGridView, origen As String, hoja As String, rango As String)
Try
'Obtenemos los datos de la hoja de Excel
Dim dt As DataTable = ObtenerDatosExcel(origen, hoja, rango)
'Mostramos los datos en un control DataGridView
dgv.DataSource = dt
Catch ex As Exception
' Se ha producido un error
MessageBox.Show(ex.Message)
End Try
Return False
End Function
Gracias de antemano por la ayuda
Valora esta pregunta


0