我需要将大型数据表(5000行和8880列)保存到CSV文件。因此,我先将DataTable
保存到StringBuilder
,然后使用File.WriteAllText
保存到文件。但是由于表的大小,它给了我内存不足的异常。我正在考虑使用StreamWriter
。有人可以帮忙使用StreamWriter
吗?
谢谢!
StringBuilder sb = new StringBuilder();
string[] CSVcolumnNames = sortedDT.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
sb.AppendLine(string.Join(",", CSVcolumnNames));
foreach (DataRow row in sortedDT.Rows)
{
string[] fields = row.ItemArray.Select(field => field.ToString()).
ToArray();
sb.AppendLine(string.Join(",", fields));
}
File.WriteAllText(CSVpath, sb.ToString());
最佳答案
试试这个经过测试并可以正常工作:
using System.IO;
using (var sw = new StreamWriter(CSVpath))
{
sw.WriteLine(string.Join(",", sortedDT.Columns.Cast<DataColumn>().Select(column => column.ColumnName)));
foreach (DataRow row in sortedDT.Rows)
{
sw.WriteLine(string.Join(",", row.ItemArray.Select(field => field.ToString())));
}
}
此代码将
fields
行写入名称为CSVpath
的文件。第一列名称,然后是值