none
Manejo de Archivo CSV RRS feed

  • Question

  • Saludos, primero que nada estoy iniciando en la programación.

    Tengo un archivo CSV que tiene una base de datos delimitada por (,):

    Ej:

    Dato1, Dato2, Dato3, Dato4, Dato5, Etc....

    Dato1, Dato2, Dato3, Dato4, Dato5, Etc....

    Dato1, Dato2, Dato3, Dato4, Dato5, Etc....

    Dato1, Dato2, Dato3, Dato4, Dato5, Etc....

     La idea es que los Datos 1,2 aparezcan en un ComboBox para filtrar la informacion y que los demas datos aparezcan en diferentes TextBox. Hasta ahora solo he conseguido que aparezcan los datos 1 y 2 en el ComboBox con el siguiente codigo:

               string[] Datos = File.ReadAllLines("./Hoja4.csv");
                foreach (var Data in Datos)
                {
                    var valores = Data.Split(',');
                    CbLocalidad.Items.Add(valores[0] + " " + valores[1]);

                         }

    Quiero filtrar la fila por el ComboBox y que los textbox se llenen con la demas informacion de esa fila.

    Gracias de antemano por la ayuda.

    Friday, April 3, 2020 5:28 AM

Answers

  • hola

    Si vas a procesar el excel llevalo a clase y listas, por ejemplo

    public class Item{ public string Dato1 {get;set;} public string Dato2 {get;set;} //otros propiedades para los datos public string Dato1y2 {
    get{ return string.Format("{0}, {1}", this.Dato1, this.Dato2); }
    } }



    entonces harias

    List<Item> items = new List<Item>()
    
    string[] Datos = File.ReadAllLines("./Hoja4.csv");
    foreach (var Data in Datos)
    {
    	var valores = Data.Split(',');
    	Item item = new Item();
    	item.Dato1 = valores[0];
    	item.Dato2 = valores[1];
    	//resto
    	
    	items.Add(item);
    
    } 
    
    CbLocalidad.ValueMember = "Dato1y2";
    CbLocalidad.DisplayMember = "Dato1y2";
    CbLocalidad.DataSource = items;

    asi tienes volcado todos las filas del archivo y peudes con las propiedades acceder a los datos

    Se supone que uses alguna forma de identificar cada registro para poder ver cual se selecciono en el combo y recuperarlo, para esos usas linq

        var item = items.FirstOrDefault(x=> x.Dato1y2 = CbLocalidad.SelectedValue);
    
        if(item != null){
    
               textboxDato3.Text = item.Dato3;
    
               //resto
    
        }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marked as answer by PokerFaceRD2 Saturday, April 4, 2020 7:22 PM
    Friday, April 3, 2020 2:27 PM

All replies

  • Hola,

    Puede usar el selecindex del combobox como índice para seleccionar los datos. Usar el evento changevalue, creo que era así, para cargar los datos en los texbox después de la selección

    Pero el array datos tendrás que ponerlo como variable de clase para poder hacer a el desde el evento.


    Es de buena educación dar las gracias cuando te ayudan, si alguna respuesta te ha sido de utilidad agradécelo marcándola como útil.
    Blog

    Friday, April 3, 2020 8:18 AM
  • hola

    Si vas a procesar el excel llevalo a clase y listas, por ejemplo

    public class Item{ public string Dato1 {get;set;} public string Dato2 {get;set;} //otros propiedades para los datos public string Dato1y2 {
    get{ return string.Format("{0}, {1}", this.Dato1, this.Dato2); }
    } }



    entonces harias

    List<Item> items = new List<Item>()
    
    string[] Datos = File.ReadAllLines("./Hoja4.csv");
    foreach (var Data in Datos)
    {
    	var valores = Data.Split(',');
    	Item item = new Item();
    	item.Dato1 = valores[0];
    	item.Dato2 = valores[1];
    	//resto
    	
    	items.Add(item);
    
    } 
    
    CbLocalidad.ValueMember = "Dato1y2";
    CbLocalidad.DisplayMember = "Dato1y2";
    CbLocalidad.DataSource = items;

    asi tienes volcado todos las filas del archivo y peudes con las propiedades acceder a los datos

    Se supone que uses alguna forma de identificar cada registro para poder ver cual se selecciono en el combo y recuperarlo, para esos usas linq

        var item = items.FirstOrDefault(x=> x.Dato1y2 = CbLocalidad.SelectedValue);
    
        if(item != null){
    
               textboxDato3.Text = item.Dato3;
    
               //resto
    
        }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marked as answer by PokerFaceRD2 Saturday, April 4, 2020 7:22 PM
    Friday, April 3, 2020 2:27 PM
  • Saludos Leandro, me presenta el siguiente error en el código al estructurar el LINQ;

    
    Friday, April 3, 2020 6:10 PM
  • Hola

     

     

    Gracias por levantar tu consulta en los foros de MSDN. Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.

     

    Siempre es un placer atender tus consultas!

     

    Gracias por usar los foros de MSDN.

     

    Oscar Navarro

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    Monday, April 6, 2020 4:50 PM
    Moderator