【发布时间】:2010-12-13 16:03:30
【问题描述】:
我需要将数据集导出为 CSV 文件。
我花了一段时间寻找一组可以遵循的规则,并意识到在编写 CSV 文件时有很多规则和例外。
http://knab.ws/blog/index.php?/archives/3-CSV-file-parser-and-writer-in-C-Part-1.html http://bytes.com/topic/c-sharp/answers/236875-problems-streamwriter-output-csv http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/0073fcbb-adab-40f0-b768-4bba803d3ccd
所以现在用逗号分隔字符串不是一个简单的过程,我已经搜索了一个现有的 CSV 编写器,要么是第 3 方,要么是(希望如此!)包含在 .net 框架中。
编辑:新链接: http://www.thinqlinq.com/Post.aspx/Title/LINQ-to-CSV-using-DynamicObject-and-TextFieldParser
TextFieldParser 是一个 VB 对象(可以从 C# 中引用),它将自动解析 CSV 文件。 :)
我想知道是否有人知道任何方便的 .Net(2.0 -> 3.5 和 4.0)库,可用于生成格式正确的 CSV 文件。
另外,如果有任何生成 CSV 文件的规则集。
有很多关于 CSV 阅读器和解析 CSV 文件的细节,但关于写作的细节却不多(好吧,我知道正好相反:P)。
http://www.codeproject.com/KB/database/CsvReader.aspx
任何帮助将不胜感激:)
我找到了另一篇文章,其中包含一些更详细的 CSV 规则: http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm
一个整洁的第 3 方库是 Linq-to-CSV(不是框架库): http://www.codeproject.com/KB/linq/LINQtoCSV.aspx
感谢大家的帮助。 我决定最好的解决方案是创建一个简单的静态类来进行特殊字符替换(Chris 提到过)。
如果我需要 Linq 查询我的 CSV 文件,我会查看 Linq-to-CSV 的 CodeProjects 实现。
再次感谢:)
【问题讨论】:
-
我认为,既然你是一个导出者,那么你在写作时可以相当放松,如果你只遵循一般规则,大多数程序(如 Excel)都会弄清楚如何阅读它们。
-
确实如此。我不幸地编写了一个没有指定潜在用途的“导出”函数。我假设 99% 的时间这将是 excel 或其他应用程序可能(不太可能)的 SSIS 包。不过我只能假设。
-
你可以试试我的轻量级分隔文件编写器:gist.github.com/eranbetzalel/…