读csv文件c#

有没有办法将csv文件读入矩阵,所以文件中的每个方块都是矩阵中的一个单元格?

有许多开源CSV阅读器,它也很容易编码自己的。

首先看看codeplex.com:http://kbcsv.codeplex.com/

或Codeproject教程: http : //www.codeproject.com/KB/database/CsvReader.aspx

为了完成,这里是我自己的实用程序类,用于从CSV文件中读取一行:

  ///  /// Defines CSV reader states ///  enum State { Initial, Quote, Data, NestedQuote } ///  /// Initializes a new instance of the  class. ///  /// The input stream. public CsvReader(Stream inputStream) { if (inputStream == null) throw new ArgumentNullException("inputStream"); reader = new StreamReader(inputStream); } ///  /// Reads a single line of CSV data. ///  /// Array of CSV fields public string[] Read() { var line = reader.ReadLine(); var retval = new List(); if (line == null) return null; var state = State.Initial; var text = new StringBuilder(); foreach (var ch in line) switch (state) { case State.Initial: if (ch == '"') state = State.Quote; else if (ch == ',') retval.Add(string.Empty); else { text.Append(ch); state = State.Data; } break; case State.Data: if (ch == ',') { retval.Add(text.ToString()); text.Length = 0; state = State.Initial; } else text.Append(ch); break; case State.Quote: if (ch == '"') state = State.NestedQuote; else text.Append(ch); break; case State.NestedQuote: if (ch == '"') { text.Append('"'); state = State.Quote; break; } state = State.Data; goto case State.Data; } retval.Add(text.ToString()); return retval.ToArray(); } ///  /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ///  public void Dispose() { reader.Dispose(); } 

制作矩阵(未经测试):

 var data = new List(); string[] line; using(reader = new CsvReader(stream)) while((line = reader.Read()) != null) data.Add(line); result = data.Select(row => row.Select(cell => int.Parse(cell)).ToArray()).ToArray(); 

VisualBasic命名空间中有一个文本阅读器,可以在C#中使用,并且可以很好地处理可怕的CSV文件:

TextFieldParser

只需在项目中添加对Microsoft.VisualBasic的引用即可。

使用正则表达式解析CSV: http : //www.hotblue.com/article0000.aspx?a = 0006

要使用自定义分隔符扩展概念,请参阅以下文章: 如何编写正则表达式以匹配不包含单词的字符串?

有很多方法。 从逐字节读取器开始。 这取决于你的csv文件格式(有/没有标题,行结尾,或’)。我写了自己的类。

一个好的读者:

http://www.stellman-greene.com/CSVReader/