使用CSVHelper读取CSV文件,并且需要将列提取到数组中[关闭]

问题描述 投票:-2回答:1

我已经阅读文档了一段时间,但似乎无法获得标题行的索引,然后将该列中的所有元素映射到数组。我不确定是否可以这样做。

我这里有这段代码可以按我的意愿工作,但是我在.Net Standard上进行开发,无法使用using Microsoft.VisualBasic.FileIO;库。

using Microsoft.VisualBasic.FileIO;

 using (TextFieldParser csvParser = new TextFieldParser("FilePath"))
            {
                csvParser.CommentTokens = new string[] { "#" };
                csvParser.SetDelimiters(new string[] { "," });
                csvParser.HasFieldsEnclosedInQuotes = true;
                csvParser.TrimWhiteSpace = true;

                string[] fields = csvParser.ReadFields(); 
                int arraySize = fields.Length;

                int index = Array.IndexOf(fields, columnExtracted);

                while (!csvParser.EndOfData)
                {
                    fields = csvParser.ReadFields();
                    string column = fields[index];
                    Console.WriteLine(column);
                }

             }

我有这样的代码,它读取单元格,但是当遇到定界符时由于行string Csv = string.Join("\n", result.ToArray());而使行中断有没有办法将所有信息放在一个数组中?它已经存储在字符串列表中,但是我无法通过索引检索数据。

 List<string> result = new List<string>();
            string value;
            using (TextReader fileReader = File.OpenText("FilePath"))
            {
                var csv = new CsvReader(fileReader, CultureInfo.InvariantCulture);
                csv.Configuration.HasHeaderRecord = true;
                while (csv.Read())
                {
                    for (int i = 0; csv.TryGetField<string>(i, out value); i++)
                    {
                        result.Add(value);
                    }
                    if (csv.Read() == false)
                        break;
                }
            }
            string Csv = string.Join("\n", result.ToArray());

c# .net csvhelper
1个回答
0
投票

如果您只希望将每一行都作为字符串数组,则应该可以使用。

while (csv.Read())
{
    string[] row = csv.Context.Record;
}
© www.soinside.com 2019 - 2024. All rights reserved.