c#csv数据到数组

时间:2017-08-07 10:20:33

标签: c# arrays csv split

我尝试将csv文件中的数据转换为C#中的数组。 问题是这些行不像所有其他值那样用分号分隔。 这意味着只需将它们全部拆分,一行的最后一行和下一行的第一个值合并为一个位置。 我怎样才能以相同的方式拆分它,但是考虑到csv文件中的换行符(\ n)?

我的想法到目前为止就像是

    String[] xyz;
    For Loop to iterate over the data
      If semicolon, split to the array
      else if \n(?) split into the array.

我对编程很陌生,所以我不知道如何正确地做到这一点,希望你能帮助我。

3 个答案:

答案 0 :(得分:0)

解析CSV没有比Lumenworks框架更好的选择。它不仅易于使用,而且重量轻,性能卓越。你可以从nuget获得图书馆 https://www.nuget.org/packages/LumenWorksCsvReader/

并解析你的csv,如

    using (CsvReader csv = new CsvReader(new StreamReader(fileStream, Encoding.Default), true))
  {
     foreach (var record in csv)
     {
            //PARSE ROWS ONE BY ONE AND GET COLUMN VALUE BY INDEX
     }
  }

答案 1 :(得分:0)

您可以使用开源库来加载csv文件。其中有许多FileHelpers,CSVReader和Cinchoo ETL。

Cinchoo ETL有CSVReader。一个简单,快速且基于流的CSV解析器。

foreach (dynamic rec in new ChoCSVReader("test.csv").WithFirstLineHeader())
{
    Console.WriteLine(rec.COMPANY_NAME);
    Console.WriteLine(rec.COMPANY_TYPE);
}

答案 2 :(得分:-1)

如果文件不是太大,您可以先调用File.ReadAllLines()来获取文本行数组。然后你可以分割该数组中的行。

string[] lines = File.ReadAllLines("MyFile.txt");
string[] splitted;

foreach(string line in lines)
{
  splitted = line.Split(';');
  ...
}

或者您可以使用StreamReader

using (StreamReader sr = File.OpenText("MyFile.txt")) 
{
  string   line;
  string[] splitted;

  while ((line = sr.ReadLine()) != null) 
  {
    splitted = line.Split(';');
    ...
  }
}