Visual Basic.NET - Problema con importar de excel a vb.net

   
Vista:

Problema con importar de excel a vb.net

Publicado por mario (14 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

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con importar de excel a vb.net

Publicado por omar (165 intervenciones) el 05/12/2017 20:38:50
saludos
instala anydesck y envias el id para conectareme remotamente, y checar en que parte esta mal.
usa punto de interrupcion para ver que valor trae cada datos y ver si al pasarlo al excel cambia ese dato


Estare a tus ordenes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Problema con importar de excel a vb.net

Publicado por mario (14 intervenciones) el 05/12/2017 21:42:34
todos los datos del excel los carga bien, pero cuando en el excel encuentra un valor con mayor al millón, ese valor me lo deja en blanco en el datagridview
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de C.P. Daviel

Problema con importar de excel a vb.net

Publicado por C.P. Daviel (13 intervenciones) el 09/12/2017 17:40:15
Prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
Dim DTbl As New DataTable
 Dim OleCn As New OleDb.OleDbConnection
 OleCn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + RutaArchivoExcel + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'" 'Esto es si tienes excel 2010 o superior
 Try
OleCn.Open()
 Dim OleAdp As New OleDb.OleDbDataAdapter("Select " + CamposExcel + " FROM [" + HojaExcel + "$]", OleCn)
 OleAdp.Fill(DTbl)
 TuDataGridView.DataSource = DTbl
 OleAdp = Nothing
 OleCn.Close()
 Catch ex As Exception
 MsgBox(ex.Message, MsgBoxStyle.Critical)
 End Try
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad