[SOLUCIONADO] CsvFileReader en C# Visual Studio (Populate DataGridView1)

Iniciado por fleshworm, Julio 28, 2017, 12:04:59 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Saludos, bueno comento soy algo nuevo para la plataforma de Visual Studio C# (.Net) y pues tengo algunos meses realisando algunos ejersicios donde utilizo una libreria de manipulacion de archivos de datos separados por comma que me permite leer y escribir en estos (Comento que tengo unos dos diaz utilizandola y solo he conseguido hechar a andar la classe de CsvFileRead pero no dudo que la de escritura funcione igual.) queria saber como reproducir el contenido en el control de dataGridView1 de windows form, si me dirigieran en la direccion correcta o resolvieran mi duda se los agradeceria?

Código: csharp

private void readValues(){
List<string> columns = new List<string>();
string value = string.Empty;
using(var reader = new CsvFileReader(@"C:\csvEditor\appData\data.csv")){
  while(reader.ReadRow(columns)){
   value = value + reader.CurrLine;
  }
  dataGridView1.Columns.Add(value);
}
}


Pd Gracias por leer!


Gallery @No tienes permitido ver enlaces. Registrate o Entra a tu cuenta -> No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Note: Im a Oracle enthusiast (Java, Javascript) with some experience under a Perl implementation platform or PHP

Julio 30, 2017, 10:45:51 PM #1 Ultima modificación: Julio 31, 2017, 01:08:53 AM por fleshworm
Saludos, comento gracias por leer! Ya encontre como leer los valores escritos en el .csv en el control dataGridView1 y trata en convertir los valores leidos por la rutina en un arreglo o cadena (Array) para que el control los organize alrededor de la cantidad de columnas si no me equivoco. Hasta ahora me ha funcionado de la manera que lo explico, sugerencias son bienvenidas.

Código: csharp

string[] Lines = values.Split(new string[]{","}, StringSplitOptions.None);
dataGridView1.Rows.Add(Lines);

Algo que no tome muy en cuenta es que pues ahora que estudio ciencias de computos hay temporadas de conding que los indices son secuenciales lo que significa que si la rutina de escribir el estilo de el control esta despues de que la rutina organise el contenido de esta se desploma o evita cambios al estilo y el control se reescribe.
Código: csharp

private static void btnRead_Click(Object sender, EventArgs e){
styleDataGridView1();
readCsvValues();
}


PD Yolo...


Gallery @No tienes permitido ver enlaces. Registrate o Entra a tu cuenta -> No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Note: Im a Oracle enthusiast (Java, Javascript) with some experience under a Perl implementation platform or PHP


Hola,
De forma alternativa podrias usar el NameSpace: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, solo debes referenciarla.


Una vez  hecho esto, usar la Clase: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta.


Un ejemplo de Uso:


Código: csharp

StringReader csv = new StringReader("underc0de, Net, Developer");


var tfp = new TextFieldParser(csv);
tfp.SetDelimiters(",");
string[] fieldData = tfp.ReadFields();


//Debug.Assert(fieldData != null, "fieldData != null");
//if (fieldData == null) return;
foreach (string value in fieldData)
{
MessageBox.Show(value);
}





Para lo que pides, podrias hacerlo de esta forma:




Código: csharp



        private static DataTable ReadCSVToDT(string filepath)
        {
            DataTable dt = new DataTable();


            try
            {


                using (var tfp = new TextFieldParser(filepath))
                {
                    tfp.SetDelimiters(",");
                    tfp.HasFieldsEnclosedInQuotes = true;
                    var colFields = tfp.ReadFields();
                    if (colFields != null)
                        foreach (var column in colFields)
                        {
                            var datecolumn = new DataColumn(column) {AllowDBNull = true};
                            dt.Columns.Add(datecolumn);
                        }


                    while (!tfp.EndOfData)
                    {
                        string[] fieldData = tfp.ReadFields();
                       // Debug.Assert(fieldData != null, "fieldData != null");
                        for (var i = 0; i < fieldData.Length; i++)
                        {
                            if (fieldData[i] == "")
                            {
                                fieldData[i] = null;
                            }
                        }
                        dt.Rows.Add(fieldData);
                    }
                }
            }
            catch (Exception ex)
            {
               // MessageBox.Show(ex.ToString());
            }
            return dt;
        }







Ejemplo de Uso:


Código: csharp

dataGridView1.DataSource = ReadCSVToDT(@"C:\Users\fudmario\Desktop\Sample.csv");