Convertir conjunto de datos en archivo de texto delimitado por tabulaciones
Frecuentes
Visto 11,991 equipos
1
Tengo un DataSet. Me gustaría convertir la columna del conjunto de datos como encabezado y los datos de la fila como datos en un archivo de texto delimitado por tabulaciones.
¿Hay alguna técnica que pueda hacer al final o tengo que hacer el bucle manualmente?
Sinceramente gracias, - Sel
3 Respuestas
5
private static string GetTextFromDataTable(DataTable dataTable)
{
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine(string.Join("\t", dataTable.Columns.Cast<DataColumn>().Select(arg => arg.ColumnName)));
foreach (DataRow dataRow in dataTable.Rows)
stringBuilder.AppendLine(string.Join("\t", dataRow.ItemArray.Select(arg => arg.ToString())));
return stringBuilder.ToString();
}
Uso:
var text = GetTextFromDataTable(dataSet.Tables[0]);
File.WriteAllText(filePath, text);
Respondido el 07 de junio de 11 a las 03:06
4
La exportación a XML está integrada, pero al exportar a CSV, puede utilizar el siguiente código: desde http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/d2071fd4-8c7d-4d0e-94c3-9586df754df8/
esto solo escribe los datos, no las columnas, primero deberá recorrer los encabezados de las columnas.
Editar: actualizado para incluir nombres de columna ... No he ejecutado esto, y esta es una edición del enlace de arriba, por lo que puede o no funcionar, pero el concepto está aquí
StringBuilder str = new StringBuilder();
// get the column headers
foreach (var c in NorthwindDataSet.Customers.Columns) {
str.Append("\"" + c.ColumnName.ToString() + "\"\t");
}
str.Append("\r\n");
// write the data here
foreach (DataRow dr in this.NorthwindDataSet.Customers) {
foreach (var field in dr.ItemArray) {
str.Append("\"" + field.ToString() + "\"\t");
}
str.Append("\r\n");
}
try {
My.Computer.FileSystem.WriteAllText("C:\\temp\\testcsv.csv", str.ToString(), false);
} catch (Exception ex) {
MessageBox.Show("Write Error");
}
Respondido el 07 de junio de 11 a las 03:06
@Alex, edité el código original, que estaba separado por comas y ahora lo convertí en tabuladores separados. Ahora mismo no incluye encabezado. Es bastante fácil de conseguir. Lo editaré ahora. jason jong
Además, habrá una pestaña de seguimiento redundante. - alex aza
@Alex, es bastante fácil eliminar la pestaña final si el OP quisiera, pero en este contexto donde cada dato está envuelto entre comillas, el lector de CSV ignoraría la pestaña final - jason jong
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# dataset text-files or haz tu propia pregunta.
Creo que Sel no quiere hacer un bucle en filas y busca una solución mejor. - Desarrolladorx