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

本文关键字:csv 文件 数组 字符串 何读取 读取 | 更新日期: 2023-09-27 18:28:56

尝试用一些结构化数据来实现读取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
        }

我需要这个带有数据的数组,因为下一步操作-在这个数组中搜索一些数据并以表单形式显示。

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

与其重新发明轮子,我宁愿使用一个众所周知且经过测试的库:

"CSV文件分析器用于读取和写入CSV文件的C#类。支持多行字段、自定义分隔符和引号,以及处理空行的选项。-其设计与Excel处理CSV文件的方式非常相似。-支持多行字段。-能够自定义空行的处理方式。-能够自定义分隔符和引号字符。"

http://csvfile.codeplex.com/

如果您只想看到一个简单的解决方案:

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

因此,您可以通过索引访问列:

string cellValue = lineFields[lineIndex][columnIndex];

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