2015-05-05 34 views
3

我正在工作C#并需要使用实体框架6。我有一个调用存储过程的服务(使用Dbcontext),并将结果放入一个IList。然后我有一个使用这项服务的控制器。现在我最初使用的结果与Epplus结合起来,将其保存为Excel/Xlsl文件 - 这可以完美/按预期工作。将SQL结果集转换为CSV文件

但是现在,我需要将其另存为CSV文件。我发现了几个链接,例如thisthis,其中将excel转换为CSV(但是我现在可以跳过这一步,因为我只需将结果集转换为CSV,而不需要Excel文件),I也发现这个link

从我个人理解,这是很容易导出/转换使用StringBuilder的一个集/结果集CSV。然而,我想知道,鉴于我有Epplus和能够保存为Excel-是否没有一个更干净的方式做到这一点?或者最好是采取这些数据,使用一个stringbuilder来逗号分隔值并将其用于CSV?

我知道类似的主题(like this one)之前已发布 - 但我觉得我的问题是足够独特的一个新的职位。

+0

这是你在找什么? http://stackoverflow.com/questions/1963719/c-sharp-sqlserver-retrieving-results-and-place-in-a-csv-format – Brduca

回答

-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 
+1

说“无非x”通常是有点危险。通常隐藏的深度你没有考虑到。在这种情况下,您需要转义实际字段本身中的任何逗号字符。您还需要转义换行符等。 还有在第一行中包含列名的问题。 .CSV非常简单,但这并不意味着您必须推出自己的实现,更好地使用现有经过测试的csv导出器来处理各种数据。 – irreal

+0

你是完全正确的。但是,如果需要的话,只需添加几行额外的代码即可添加这些“特性”。我在EPPlus上工作过很多,并且创建Excel文件非常棒,但是为了创建CSV文件我不会去做。 – Tys

+0

实际上有很多方法可以实现健壮性和优化,您可以并且有时根据您的输出方式,时间和内容应该这样做。查看这个图书馆的例子,了解一下csv出口商可能需要什么类型的东西http://www.codeproject.com/Articles/685310/Simple-and-fast-CSV-library-in-Csharp – irreal