TransWikia.com

Eliminacion de caracter al Exportar Gridview a TXT, delimitados por comillas simples C#

Stack Overflow en español Asked by Fernankin on January 11, 2021

he estado trabajo en exportar datos a txt para lo cual tengo una instruccion que me permite exportar los datos de una gridview a un archivo .txt

StringWriter stringWrite = new StringWriter();
            
            foreach (GridViewRow row in GridViewDefault.Rows)
            {
                foreach (TableCell redatos in row.Cells)
                {
                    stringWrite.Write(redatos.Text + ",");
                }
                stringWrite.WriteLine(""); 
            }

hasta ahi todo funciona perfecto, se escriben los datos y los delimita por coma ‘,’.

los datos me los presenta de la siguiente manera en el .txt

02,CC,1140417534,6001044,4709000,30/09/2020,BETA BETA BETA,

Requiero eliminar la ultima comilla y mostrar la informacion de esta forma:

 02,CC,1140417534,6001044,4709000,30/09/2020,BETA BETA BETA

para lo cual he intentado lo siguiente:

StringWriter stringWrite = new StringWriter();
            
            foreach (GridViewRow row in GridViewDefault.Rows)
            {
                foreach (TableCell redatos in row.Cells)
                {
                    stringWrite.Write(redatos.Text + ",");
                    redatos.Text.Substring(0, redatos.Text.Length - 1);
                }
                stringWrite.WriteLine(""); 
            }

lo anterior no me resulta, y no he logrado el asunto que puedo modificar

2 Answers

Una forma muy simple de logarlo es usando el string.Join() para unir los items de la linea separandolos por la ,

StringWriter stringWrite = new StringWriter();

foreach (GridViewRow row in GridViewDefault.Rows)
{
    var items = new List<string>();
    foreach (TableCell redatos in row.Cells)
    {
        items.Add(redatos.Text);
    }
    
    string linea = string.Join(",", items);
    stringWrite.WriteLine(linea); 
}

de esta forma no necesitas poner logica para quitar ese ultimo caracter

Correct answer by Leandro Tuttini on January 11, 2021

Lo que tiene es que evitar que la coma se le agregue cuando es la ultima columna de la celda, evaluando dentro del for que recorre las celdas si ya la celda es o no la ultima

Mas o menos asi:

StringWriter stringWrite = new StringWriter();

foreach (GridViewRow row in GridViewDefault)
{
    var cntCells = row.Cells.Count; //Obtiene la cantidad de celdas en la fila
    var iCell = 0; //Variable que controla en que celda de la fila va
    foreach (TableCell redatos in row.Cells)
    {
        iCell ++; //Incrementa la variable decontrol
        if (iCell < cntCells)
        {
            //Aun no es la ultima celda de la fila
            stringWrite.Write(redatos.Text + ",");
        }
        else {
            //Es la ultima celda de la fila. No se debe agregar la coma
            stringWrite.Write(redatos.Text);
        }
        redatos.Text.Substring(0, redatos.Text.Length - 1);
    }
    stringWrite.WriteLine("");
}

Answered by Mauricio Ortega on January 11, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP