c# - 将包含 100 万条记录的数据表导出到 csv
问题描述
我有一个 C# 数据表,其中包含大约 100 万行和 20 列我需要将其导出到 csv,我尝试了字符串生成器,但页面一直在加载
public ActionResult DownloadExcel()
{
System.Data.DataTable result = Helpers.TaxMailingExcelBuilder.Export();
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=myData.csv");
Response.Charset = "";
Response.ContentType = @"application/text";
Response.Output.Write(ExportDataTable(result).ToString());
Response.Flush();
Response.End();
return View();
}
private StringBuilder ExportDataTable(System.Data.DataTable dt)
{
var stringBuilder = new StringBuilder();
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
stringBuilder.Append(dt.Rows[i][j].ToString() + ',');
}
stringBuilder.Append("rn");
}
return stringBuilder;
}
}
页面继续加载没有任何进展
解决方案
我会像下面的代码一样返回一个 StringWriter
private StringWriter ExportDataTable(DataTable dt)
{
StringWriter writer = new StringWriter();
string[] columnNames = dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
writer.WriteLine(string.Join(",", columnNames));
foreach(DataRow row in dt.AsEnumerable())
{
writer.WriteLine(string.Join(",", row.ItemArray.Select(x => x.ToString())));
}
return writer;
}
推荐阅读
- python - 从 Python DataFrame 的行/列数据中生成对
- mp4 - PPS 内容后得到未知数据
- core-data - 如何用 ObservedObject 和 NSManagedObject 制作 Picker?
- spark-koalas - 使用 assign 在 Koalas DataFrame 中添加新列
- serialization - 可序列化,编译器生成的问题
- ios - 如何解决依赖关系 swinject(没有情节提要),另一个重要的控制器在哪里作为 rootVC?
- r - 需要帮助使用 scale_color_gradient2 更改 ggmap 中的图例标题
- algorithm - 如何找到字符串和语言之间的编辑距离/编辑距离?
- apache-spark - Spark Dataframes AND/OR 在同一个单元格中
- python - 如何根据Django字段默认选择单选按钮?