Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Archivo Txt sin caracteres de separacion datagridview vb.net

Estas en el tema de Archivo Txt sin caracteres de separacion datagridview vb.net en el foro de .NET en Foros del Web. Buenas tardes, amigos de forum , les dejo mi siguinte duda. tengo un archivo txt que no posee caracteres de separacion, es decir, es una ...
  #1 (permalink)  
Antiguo 06/08/2013, 14:39
Avatar de gonzalezjesus_77  
Fecha de Ingreso: julio-2013
Ubicación: venezuela
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Información Archivo Txt sin caracteres de separacion datagridview vb.net

Buenas tardes, amigos de forum , les dejo mi siguinte duda. tengo un archivo txt que no posee caracteres de separacion, es decir, es una cadena que tiene 119 caracteres, ¿como hago para cargarlo en un datagridview (extraer), cada dato por separado. Necesito ayuda amigos

El codigo que uso es este:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try

If (TextBox1.Text <> String.Empty) Then
Dim leer As New StreamReader(TextBox1.Text)
Dim texto As String = ""
Dim count As Integer = 3
Dim myChar As Char
Dim split As Char() = Nothing
While (Not texto Is Nothing)
texto = leer.ReadLine()
If (Not texto Is Nothing) Then
split = texto.Split(String.Join(CStr(3))),count)
DataGridView1.Rows.Add(split(0), split(1), split(2))
End If
End While

Else
MsgBox("Seleccione el archivo a cargar", MsgBoxStyle.Exclamation, "Error")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
  #2 (permalink)  
Antiguo 07/08/2013, 09:20
Avatar de ldcd  
Fecha de Ingreso: enero-2010
Ubicación: Distrito Federal
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 6
Respuesta: Archivo Txt sin caracteres de separacion datagridview vb.net

Necesitas una forma de reconocer cuando realizar el split, y para esto necesitas un caracter especifico puede ser un espacio en blanco, de otra forma como sabrías cuando termina un campo e inicia el otro ??

Además en este fragmento de código, creo que tu If (Not texto Is Nothing) Then esta de más, ya que la condición ya esta dentro de While (Not texto Is Nothing), pruebalo así

While (Not texto Is Nothing)
texto = leer.ReadLine()
split = texto.Split(String.Join(CStr(3))),count)
DataGridView1.Rows.Add(split(0), split(1), split(2))
End While
  #3 (permalink)  
Antiguo 07/08/2013, 10:19
Avatar de gonzalezjesus_77  
Fecha de Ingreso: julio-2013
Ubicación: venezuela
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Archivo Txt sin caracteres de separacion datagridview vb.net

Gracias Amigo ldcd por tu valiosa Ayuda tienes razon en lo que me has indicado, quiero indicar ya que no lo mencione este archivo TXT tiene una estructura que tuve que solicitar, es decir, que representa cada dato y ademas tengo los datos en donde comienza y donde termina cada cadena, este archivo lo recorte para menejar solo tres cadenas en el DataGridView. estos son los Datos del TXT : 0111202609936
Estos son los datos de la estructura del mismo: DESDE HASTA CONCEPTO
1 2 GREMIO
3 5 CODIGO CASA COMERCIAL
6 13 CEDULA

este es el codigo que me ha funcionado muy bien cuando el Archivo txt tiene caracteres de separacion ejmplo: "."",""|" ¿que podria mejorar para que funcione de la otra forma?

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try

If (TextBox1.Text <> String.Empty) Then
Dim leer As New StreamReader(TextBox1.Text)
Dim texto As String = ""
Dim count As Integer = 3
Dim split As String() = Nothing
While (Not texto Is Nothing)
texto = leer.ReadLine()
If (Not texto Is Nothing) Then
split = texto.Split(New Char() {" |", ";", "-"}, count)
DataGridView1.Rows.Add(split(0), split(1), split(2))
End If
End While

Else
MsgBox("Seleccione el archivo a cargar", MsgBoxStyle.Exclamation, "Error")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
  #4 (permalink)  
Antiguo 07/08/2013, 12:28
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Archivo Txt sin caracteres de separacion datagridview vb.net

Hola, puedes recorrer por lineas tu documento y manejar substring, con esto tu le indicas el rango que tomara para cada campo, claro suponeniendo que tengas "medido" los campos, es decir por ejemplo, que el primero seria de indice 0 al 3, despues del 4 al 10 y asi para todos.

Algo asi:
tienes tu StreamReader, ejemplo "leer"
Código VB.NET:
Ver original
  1. Dim texto as String
  2. texto = leer.ReadLine()
  3. Dim primerdato as String = texto.Substring(0,2).ToString()
  4. DataGridview.Rows.Add(primerdato, segundodato, etc)

Espero te Ayude.
  #5 (permalink)  
Antiguo 07/08/2013, 22:24
Avatar de gonzalezjesus_77  
Fecha de Ingreso: julio-2013
Ubicación: venezuela
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Archivo Txt sin caracteres de separacion datagridview vb.net

Buenas noches Amigo emmax Gracias por la Ayuda, por tu valiosa ayuda, probe lo que me indicaste y final mente Funciona.
Asi queda el codigo para aquellos compañeros que tengan la misma duda y lo puedan usar cuando esten en situaciones similares.
Este codigo lo tengo para un Button el cual llamo Cargar, Agrego tambien que uso otro Button el cual llamo Examinar para buscar el archivo y uso tambien un OpenFileDialog y un TextBox

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try

If (TextBox1.Text <> String.Empty) Then
Dim leer As New StreamReader(TextBox1.Text)
Dim texto As String
texto = leer.ReadLine()
Dim primerdato As String = texto.Substring(0, 2).ToString()
Dim segundodato As String = texto.Substring(2, 3).ToString()
Dim tercerdato As String = texto.Substring(5, 8).ToString()
DataGridView1.Rows.Add(primerdato, segundodato, tercerdato)
Else
MsgBox("Seleccione el archivo a cargar", MsgBoxStyle.Exclamation, "Error")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Etiquetas: caracteres, datagridview, separacion, textbox, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.