我需要将大型数据表(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的文件。第一列名称,然后是值

10-06 13:35
查看更多