我已经阅读文档了一段时间,但似乎无法获得标题行的索引,然后将该列中的所有元素映射到数组。我不确定是否可以这样做。
我这里有这段代码可以按我的意愿工作,但是我在.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());
如果您只希望将每一行都作为字符串数组,则应该可以使用。
while (csv.Read())
{
string[] row = csv.Context.Record;
}