Principales respuestas
Manejo de Archivo CSV

Pregunta
-
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.
Respuestas
-
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- Marcado como respuesta PokerFaceRD2 sábado, 4 de abril de 2020 19:22
Todas las respuestas
-
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- Propuesto como respuesta Óscar NavarroModerator viernes, 3 de abril de 2020 13:38
-
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- Marcado como respuesta PokerFaceRD2 sábado, 4 de abril de 2020 19:22
-
-
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.