首页 > 解决方案 > 在 CSV 帮助程序中读取文件

问题描述

尝试读取数据不是用逗号分隔,而是使用引号的文件:"

例如:

"num" "date" "callsite" "level" "thread"

这可以做到吗?

csvhelper给出找不到标头的异常。

标签: csvhelper

解决方案


如果您的数据由制表符分隔,那么您可以设置csv.Configuration.Delimiter = "\t";

public class Program
{
    public static void Main(string[] args)
    {

        using (MemoryStream stream = new MemoryStream())
        using (StreamWriter writer = new StreamWriter(stream))
        using (StreamReader reader = new StreamReader(stream))
        using (CsvReader csv = new CsvReader(reader))
        {
            writer.WriteLine("\"num\"\t\"date\"\t\"callsite\"\t\"level\"\t\"thread\"");
            writer.WriteLine("\"1\"\t\"1/1/2019\"\t\"callsite1\"\t\"high\"\t\"20\"");
            writer.Flush();
            stream.Position = 0;

            csv.Configuration.Delimiter = "\t";

            var results = csv.GetRecords<Foo>().ToList();
        }


        Console.ReadKey();
    }
}

public class Foo
{
    public int num { get; set; }
    public DateTime date { get; set; }
    public string callsite { get; set; }
    public string level { get; set; }
    public string thread { get; set; }
}

推荐阅读