Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nico56 en 2 Enero 2010, 19:13 PM

Título: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: nico56 en 2 Enero 2010, 19:13 PM
Hola que tal, tengo un archivo con la siguiente forma


nombre1;telefono1;
nombre2;telefono2;



Como veran uso el ";" como delimitador en el string.

Tengo una función que va leyendo el archivo y guardando en dos variables distintas el nombre y el telefono:



public void miFuncion()
{         
            string[] campos;
            char[] x={';'} //delimitador

            FileStream fs = new FileStream("C:\\Archivo.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            while (!sr.EndOfStream)
            {
                string linea = sr.ReadLine();
                campos=linea.split(x);
               
            }

            sr.Close();
            fs.Close();
}


Entonces en el codigo anterior me queda en "campos[0]" el nombre, y en "campos[1]" el telefono, que herramienta puedo usar para ir mostrandolo en forma de lista con tabulaciones. Probe de usar un texBox pero me queda muy desalineado las columnas :S .

Desde ya gracias y saludos.
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: Novlucker en 2 Enero 2010, 20:04 PM
Con un listbox y ya :P

Saludos
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: nico56 en 2 Enero 2010, 22:33 PM
El listbox tiene una propiedad que se llama "multicolumn" la pongo en true, pero donde pongo la cantidad de columnas. ?
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: seba123neo en 2 Enero 2010, 22:40 PM
yo lo haria en un listview, podes poner las cabeceras y personalizarlo como quieras, por si acaso alguna vez, en vez de 2 campos tenes 10, te va a quedar mejor con un listview.

saludos.
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: nico56 en 3 Enero 2010, 00:00 AM
Cita de: seba123neo en  2 Enero 2010, 22:40 PM
yo lo haria en un listview, podes poner las cabeceras y personalizarlo como quieras, por si acaso alguna vez, en vez de 2 campos tenes 10, te va a quedar mejor con un listview.

saludos.

Hola, si en realidad es para una tabla de 10 columnas, pero para no complicar aca las cosas en el foro lo pregunte para 2, total si me sale con 2 me sale con 10. Podrias explicarme como lo harias con un listView porque no le encuentro la vuelta. Gracias.
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: Shell Root en 3 Enero 2010, 00:39 AM
Cita de: nico56 en  2 Enero 2010, 22:33 PMEl listbox tiene una propiedad que se llama "multicolumn" la pongo en true, pero donde pongo la cantidad de columnas. ?
Código (vbnet) [Seleccionar]
ListBox1.Items.AddRange(New Object() {"Nombre, Telefono"})
Pero sale muy desorganizado.



Cita de: nico56 en  3 Enero 2010, 00:00 AMPodrias explicarme como lo harias con un listView porque no le encuentro la vuelta. Gracias.

Lo del ListView, el code es de seba123neo
Código (vbnet) [Seleccionar]
       Dim oReg As New ListViewItem("Item columna1")

       With ListView1
           .View = View.Details
           .Columns.Add("Archivos ", 300)
           .Columns.Add("Modificación", 120)
       End With
       With oReg
           .SubItems.Add("Item Columna 2")
           ListView1.Items.Add(oReg)
       End With


Saludines!
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: nico56 en 3 Enero 2010, 03:08 AM
Hola shell root, gracias , no me quiero abusar pero podrias ponerlo en c#  :-[
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: seba123neo en 3 Enero 2010, 03:34 AM
es casi lo mismo, sacale el With ya que no existe esta instrucción en C#, y lo demas igual.
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: Shell Root en 3 Enero 2010, 03:36 AM
Cita de: nico56 en  3 Enero 2010, 03:08 AM
Hola shell root, gracias , no me quiero abusar pero podrias ponerlo en c#  :-[

Código (c#) [Seleccionar]
        ListViewItem oReg = new ListViewItem("Item columna1");
   
        ListView1.View = View.Details;
        ListView1.Columns.Add("Archivos ", 300);
        ListView1.Columns.Add("Modificación", 120);

        oReg.SubItems.Add("Item Columna 2");
        ListView1.Items.Add(oReg);
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: nico56 en 3 Enero 2010, 06:56 AM
Gracias de vuelta, funciona perfecto cuando leo el primer registro del archivo, pero cuando le pongo un ciclo while para que lo haga con todo el archivo me dice que la variable "campos[1]" se paso del indice, que puede ser ?


private void button1_Click(object sender, EventArgs e)
        {
            string[] campos;
            char[] x ={ ';' };//delimitador

            FileStream fs = new FileStream("cheques.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            listView1.Columns.Add("FECHA ", 75);
            listView1.Columns.Add("CLIENTE", 100);
            listView1.Columns.Add("NUMERO", 75);
            listView1.Columns.Add("BANCO", 100);
            listView1.Columns.Add("VENCIMIENTO", 75);
            listView1.Columns.Add("IMPORTE", 75);
            listView1.Columns.Add("TENEDOR", 100);

            while (sr.EndOfStream != true)
            {
                campos = sr.ReadLine().Split(x);
               
                ListViewItem oReg = new ListViewItem(campos[0]);
               
                listView1.View = View.Details;
               
                oReg.SubItems.Add(campos[1]);//cliente (ahi me tira el error)
                oReg.SubItems.Add(campos[2]);//numero
                oReg.SubItems.Add(campos[3]);//banco
                oReg.SubItems.Add(campos[4]);//vencimiento
                oReg.SubItems.Add(campos[5]);//importe
                oReg.SubItems.Add(campos[6]);//tenedor
               
                listView1.Items.Add(oReg);
            }

           
        }
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: seba123neo en 3 Enero 2010, 18:05 PM
pues claro, en el archivo debe faltar ese campo y al hacer el split solo quedan los campos que hay y ese indice no existe.o sea si en el archivo tenes 5 campos por ejemplo asi:

jose;san martin;pepe;seba;pipo

y en otra linea tenes:

jose;maria;martin

llega hasta el indice 2 y los otros no existe y ahi el error, para evitar eso se me ocurre que cada vez que en el while se haga el split, hagas un For, algo asi:

Código (vbnet) [Seleccionar]
        private void button1_Click(object sender, EventArgs e)
        {
            string[] campos;
            char[] x ={ ';' };//delimitador

            string vLinea = "";

            FileStream fs = new FileStream("C:\\ejemplo.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            listView1.Columns.Add("FECHA ", 75);
            listView1.Columns.Add("CLIENTE", 100);
            listView1.Columns.Add("NUMERO", 75);
            listView1.Columns.Add("BANCO", 100);
            listView1.Columns.Add("VENCIMIENTO", 75);
            listView1.Columns.Add("IMPORTE", 75);
            listView1.Columns.Add("TENEDOR", 100);

            while (!sr.EndOfStream)
            {
                vLinea = sr.ReadLine();

                campos = vLinea.Split(x);

                ListViewItem oReg = new ListViewItem(campos[0]);

                listView1.View = View.Details;

                for (int i=1; i< campos.Length -1 ; i++)
                {
                    oReg.SubItems.Add(campos[i]);
                }

                listView1.Items.Add(oReg);
            }

            fs.Close();
            sr.Close();
        }


lo que hace es hacer un For desde el indice 0 hasta el mayor indice que tenga la matriz y lo agrega, y funciona por mas que no tengas algunos campos, pero no es lo que se deberia hacer, porque hay un problema por ejemplo ¿ como vos te aseguras que el dato que esta en la columna 2 es realmente de la columna 2 ?

ejemplo:

supongamos que en la columan 2 solo van los nombres

una linea normal:

01/01/2000;josesito;banco nacion

una linea sin la columna 1 te quedaria:

josesito;banco nacion

el codigo te va a funcionar, pero  te va a insertar la columna 2 como si fuera la 1 porque falta un campo....a no ser que te asegures que realmente cuando falta un campo este el separador ";" exista, por ejemplo en el ejemplo anterior deberia quedar asi:

;josesito;banco nacion

pregunta ¿quien genera ese archivo? ¿ no es mejor trabajarla con una base de datos?

saludos.
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: MANULOMM en 5 Enero 2010, 19:44 PM
ya es un poco tarde pero hubiese sido muy sencillo con un dataGridView y un DataSet....

Atentamente,

Juan Manuel Lombana
Medellín - Colombia
Título: Re: Desplegar un archivo en forma de tabla con c# en windows aplicattion
Publicado por: nico56 en 6 Enero 2010, 15:40 PM
Gracias!  ;-) ;-)