可能重复:
CSV File Imports in .Net
在.net中,是否有一个标准库应该用于读取csv文件?网上的所有样本都会推出自己的csv阅读器/解析器,或者使用OleDb。
使用任何这些解决方案都不是问题,我只是想知道是否有一个普遍接受的库(不是我能找到的),或者其他任何“正确”的方法吗?
答案 0 :(得分:18)
CsvReader是一个非常好的...它不是微软,但效果非常好,并且比一些替代品(传统的OleDb等)快得多。
答案 1 :(得分:10)
很多人写自己的原因之一是 CSV不是那么简单。例如:
这些一些人们编写自己的解析器的原因,因为他们无法读取使用所有这些不同设置创建的文件。或者他们编写自己的序列化程序,因为目标系统有许多这些特性。
如果您不关心这些问题,请使用最方便的库。但要明白他们在那里。
答案 2 :(得分:10)
VB命名空间有一个很棒的TextFieldParser类。我知道,c#人不喜欢用那种“基本”语言来引用一个库,但它非常好。
它位于Microsoft.VisualBasic.FileIO.TextFieldParser
我曾经搞乱OLEDB,创建列定义文件等 - 但是发现TextFieldParser是一个非常简单和方便的工具,用于解析任何分隔文件。
答案 3 :(得分:6)
尝试CsvHelper(我维护的库)。它也可以通过NuGet获得。
CsvHelper允许您直接将CSV文件读入自定义类。
var streamReader = // Create a reader to your CSV file.
var csvReader = new CsvReader( streamReader );
List<MyCustomType> myData = csvReader.GetRecords<MyCustomType>();
CsvReader将根据标题行自动确定如何匹配属性名称(这是可配置的)。它使用编译的表达式树而不是反射,所以它非常快。
它也非常易于扩展和配置。
答案 4 :(得分:2)
答案 5 :(得分:2)
KBCsv是另一种选择,特别是如果您需要效率和处理大量CSV文件的能力。
披露:我写了KBCsv,因此是“KB”;)
答案 6 :(得分:0)
我非常确定您可以使用一行代码将CSV文件读入DataTable。一旦它在DataTable中,您就可以对其进行排序,过滤,迭代等。
This question有一些将CSV读入DataTables的示例。