【问题标题】:Convert SQL result set to CSV file将 SQL 结果集转换为 CSV 文件
【发布时间】:2015-07-14 23:26:13
【问题描述】:

我正在使用 C#,需要使用 Entity Framework 6。我有一个调用存储过程(使用 Dbcontext)并将结果放在 IList 中的服务。然后我有一个使用此服务的控制器。现在,最初我使用结合 Epplus 的结果将其保存为 Excel/Xlsl 文件 - 这完美/符合预期。

但是现在,我需要将其保存为 CSV 文件。我找到了几个链接,例如 thisthis,它们将 excel 转换为 CSV (但是我现在可以跳过这一步,因为我可以将结果集转换为 CSV,不需要excel文件),我也找到了这个link

据我了解,使用 stringbuilder 将数据集/结果集导出/转换为 CSV 相当容易。但是,我想知道,鉴于我有 Epplus 并且能够保存为 Excel-有没有更清洁的方法?还是最好获取数据,使用字符串生成器来分隔值并将其用于 CSV?

我知道以前曾发布过类似的主题 (like this one) - 但我觉得我的问题非常独特,可以发布新帖子。

【问题讨论】:

标签: c# sql excel entity-framework csv


【解决方案1】:

使用 EPPlus 并不是一种更清洁的方法。你只需要更多的代码来完成完全相同的结果。创建 CSV 文件只不过是编写一个带有逗号的文本文件。那么为什么不这样做呢?

StringBuilder sb = new StringBuilder();
foreach (DataRow dr in yourDataSet) 
{
  List<string> fields = new List<string>();
  foreach (object field in dr.ItemArray) 
  {
     fields.Add(field);
  }
  sb.Append(String.Join(",", fields) + Environment.NewLine);
}

//and save.. sb.ToString() as a .csv file

【讨论】:

  • 说“无非是 x”通常有点危险。经常有你没有考虑到的隐藏深度。在这种情况下,您需要转义实际字段本身中的任何逗号字符。您还需要转义换行符等。还有一个问题是在第一行中是否包含列名。 .CSV 非常简单,但这并不意味着您必须推出自己的实现,最好使用现有的经过验证的 csv 导出器来处理各种数据。
  • 你完全正确。但是,如果需要,只需几行额外代码即可添加这两个“功能”。我在 EPPlus 上做了很多工作,创建 Excel 文件真的很棒,但仅仅创建 CSV 文件我不会这样做。
  • 实际上有很多稳健性和优化方式,您可以,有时,取决于您导出的方式、时间和内容,应该这样做。查看此库以获取 csv 导出器可能需要哪些类型的示例codeproject.com/Articles/685310/…
  • 有趣的项目,但从这里开始,我想把它留给主题启动器。我不知道他需要一辆汽车还是一辆豪华的梅赛德斯。
  • 我想我实际上会使用类似 codeproject.com/Articles/685310/… 的东西。试试看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
相关资源
最近更新 更多