如何在字符串数组中读取* .csv文件

时间:2013-08-24 10:33:42

标签: c# arrays csv

尝试用一些结构化数据来读取csv文件(这个文件用于我的程序提醒 - 文件中的数据采用下一种方式构建:日期,名称,时间,时间,描述)。目前我想从文件中读取所有数据并将其放在一些字符串数组中,其中每个元素 - 文件中的1行。 做了什么

编写一些代码,创建用于读取和打开文件的流。 但目前我只能阅读一行。或一行中的所有文件。 怎么知道,文件中有多少行?或如何读取数组中文件中的所有行,其中eaach元素 - 文件中的一行。

代码

    FileStream fs = new FileStream(FilePath, FileMode.Open,
               FileAccess.Read, FileShare.None);
        StreamReader sr = new StreamReader(fs);

        string lines = sr.ReadLine();
       //temp veiw result
        viewTextBox.Text = lines; //read only one first line in file
        sr.Close();

或尝试阅读所有行

        string []line = File.ReadAllLines(FilePath); //read all lines in File
       //temp check
        for (int i=0; i<line.Length;i++){
            viewTextBox.Text += line[i]; // in this case all data stored in one lines
        }

我需要这个数组包含数据,因为接下来的操作 - 搜索此数组中的一些数据并以表格形式显示。

2 个答案:

答案 0 :(得分:2)

而不是重新发明轮子,我宁愿使用一个知名且经过测试的库:

“CSV文件解析器 用于读写CSV文件的C#类。支持多行字段,自定义分隔符和引号字符,以及如何处理空行的选项。 - 旨在表现出Excel处理CSV文件的方式。 - 支持多行字段。 - 能够自定义空行的处理方式。 - 能够自定义分隔符和引号字符。“

http://csvfile.codeplex.com/

答案 1 :(得分:0)

如果您只是想看看如何做到的简单解决方案:

IEnumerable<string[]> lineFields = File.ReadAllLines(FilePath).Select(line => line.Split(','));

那么您可以按索引访问列:

string cellValue = lineFields[lineIndex][columnIndex];

这不会处理使用引号来允许数据中的逗号的csv文件,因为你需要编写一个例程来分割引用的字符串。