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
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP