【问题标题】:how read *.csv file in string array如何在字符串数组中读取 *.csv 文件
【发布时间】:2013-08-24 10:33:41
【问题描述】:

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

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

代码

    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
        }

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

【问题讨论】:

    标签: c# arrays csv


    【解决方案1】:

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

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

    http://csvfile.codeplex.com/

    【讨论】:

    • 我建议使用 Oscar 建议的图书馆,一旦你知道它的内部运作良好;根据您的特定需求推出自己的产品。
    • 是的,我可以使用已经发明的东西,但我目前只是学习,所以我不想复制粘贴-我想了解原理并尝试一下,但无论如何-谢谢
    • 好吧,我虽然这是专业需求。但是,我不清楚您的问题是什么。
    【解决方案2】:

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

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

    那么你可以通过索引访问列:

    string cellValue = lineFields[lineIndex][columnIndex];
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多