将几个DataTable对象导出到不同的.csv文件中
本文关键字:csv 文件 几个 对象 DataTable | 更新日期: 2023-09-27 18:28:29
我想使用foreach循环和方法"WriteDataTable"将不同的DataTable对象导出到不同的.csv文件中。Datatable对象的大小非常小(只有15列和2行)。
这是foreach循环:
foreach (var dt in DataTableList)
{
// Name of the file
string fileName = DateTime.Now.Year.ToString();
// Call method
WriteDataTable(fileName, dt);
}
这是一种方法:
public void WriteDataTable(string fileName, DataTable dt)
{
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>()
.Select(column => column.ColumnName);
sb.AppendLine(string.Join(";", columnNames));
foreach (DataRow row in dt.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(";", fields));
}
File.WriteAllText(fileName, sb.ToString());
}
程序运行正常,但只有部分DataTable对象真正导出。当新的DataTable对象出现时,看起来上一个DataTable对象仍在导出中。如果我使用"Thread.Sleep(500)"暂停进程,则导出所有对象:
foreach (var dt in DataTableList)
{
// Name of the file
string fileName = DateTime.Now.Year.ToString();
// Call method
WriteDataTable(fileName, dt);
// Pause the process
Thread.Sleep (500);
}
有没有任何建议可以在不减慢进程的情况下导出所有DataTable对象?。
提前谢谢。
我发现了问题。由于我使用"DateTime.Now"(直到秒)作为文件名,当我在同一秒内导出两个文件时,第一个导出文件会被第二个文件覆盖。