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

[SOLUCIONADO] Importación txt a excel celda a celda, No coge todas las líneas(VB.net)

Estas en el tema de Importación txt a excel celda a celda, No coge todas las líneas(VB.net) en el foro de .NET en Foros del Web. Buenas tardes, Tengo un problema a ver si me podéis ayudar. La cuestión es que estoy haciendo un programa que me pase una cadena de ...
  #1 (permalink)  
Antiguo 25/09/2014, 07:52
Avatar de The_Crab  
Fecha de Ingreso: septiembre-2014
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 9 años, 7 meses
Puntos: 0
Importación txt a excel celda a celda, No coge todas las líneas(VB.net)

Buenas tardes,

Tengo un problema a ver si me podéis ayudar.

La cuestión es que estoy haciendo un programa que me pase una cadena de texto (leo el TXT línea a línea) a una hoja de excel después de dividir dicha cadena con "substring" por donde me conviene.

Mi dolor de cabeza viene en el While y el For que estoy usando

Código:
 
                 While Not fileReader.EndOfStream
                    For numero = 2 To 4
                       lineRead = fileReader.ReadLine()

                    cadena1 = lineRead.Substring(0, 11)
                    oSheet.Range(A & numero).Value = cadena1
                    cadena2 = lineRead.Substring(11, 11)
                    oSheet.Range(B & numero).Value = cadena2
                    cadena3 = lineRead.Substring(22, 5)
                    oSheet.Range(C & numero).Value = cadena3
                    cadena4 = lineRead.Substring(27, 40)
                    
                        Next
                        End While
Problema1: No me coge todas las líneas del texto, solo me pinta las 3 últimas
Problema2: El "to" del "For", lo tengo que modificar a mano ya que si hay menos líneas el programa muere.

Preguntas:
¿Que está mal para que no me coja el total de las líneas? (las que exporta las traspasa correctamente)
¿Sabéis como puedo hacer para que me encuentre automáticamente la última línea e indicarla en el "To"?

Gracias de antemano y un saludo
  #2 (permalink)  
Antiguo 26/09/2014, 11:56
Avatar de lucasmoadr  
Fecha de Ingreso: marzo-2007
Ubicación: Llavallol, Buenos Aires
Mensajes: 220
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Importación txt a excel celda a celda, No coge todas las líneas(VB.net)

hola, una pregunta. de donde sacas el For numero = 2 To 4.

por lo que veo es el rango del excel, por lo tanto, como pueden ser menos? ahi me perdi en tu explicacion. podrias explicarlo mejor a ver si puedo ayudarte.

Saludos!
__________________
Alquileres en la costa
Se tu mismo
  #3 (permalink)  
Antiguo 26/09/2014, 15:45
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años
Puntos: 16
Respuesta: Importación txt a excel celda a celda, No coge todas las líneas(VB.net)

Buenas compañeros,

Comencemos por el principio...
Porqué tienes el For¿?
Con el While lees cada línea, pero.. ¿Y el For?

Lo que sí tienes que hacer es tener un contador de número de línea externo al While...
Y el código terminaría siendo algo así:

Dim iNumLinea As Integer = 0

While Not fileReader.EndOfStream
iNumLinea += 1 'Sumo 1 al contenido que ya tenga iNumLinea.
lineRead = fileReader.ReadLine()

cadena1 = lineRead.Substring(0, 11)
oSheet.Range(A & iNumLinea).Value = cadena1

cadena2 = lineRead.Substring(11, 11)
oSheet.Range(B & iNumLinea).Value = cadena2

cadena3 = lineRead.Substring(22, 5)
oSheet.Range(C & iNumLinea).Value = cadena3

cadena4 = lineRead.Substring(27, 40)
oSheet.Range(D & iNumLinea).Value = cadena4
End While


Es muy probable que el While en sí se pueda sustituir por algo más conveniente... Es cuestión de revisar más ejemplos en Inet..


Un saludo!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #4 (permalink)  
Antiguo 29/09/2014, 02:43
Avatar de The_Crab  
Fecha de Ingreso: septiembre-2014
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Importación txt a excel celda a celda, No coge todas las líneas(VB.net)

Gracias por vuestras respuesta.

El For está ahí porque soy novato y los bucles en si no se me dan muy bien xD, de hecho la verdad es que este es el primero que hago.

La cosa está en que necesitaba aumentar la variable numero en 1 con cada línea y pensaba que con esto se hacía con FOR...

Al final basándome en la respuesta de "Drako_18" lo he conseguido de la siguiente forma

Código:
Dim numero As Integer = 2

            While Not fileReader.EndOfStream


                lineRead = fileReader.ReadLine()

                cadena1 = lineRead.Substring(0, 11)
                oSheet.Range(A & numero).Value = cadena1
                cadena2 = lineRead.Substring(11, 11)
                oSheet.Range(B & numero).Value = cadena2
                cadena3 = lineRead.Substring(22, 5)
                oSheet.Range(C & numero).Value = cadena3
                cadena4 = lineRead.Substring(27, 40)
                numero = numero + 1

            End While
Con esto el programa hace exactamente lo que necesito.

Un saludo

Etiquetas: celda, excel, todas, 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 06:21.