【问题标题】:How to find out more details on CsvHelper.TypeConversion.CsvTypeConverterException?如何找到有关 CsvHelper.TypeConversion.CsvTypeConverterException 的更多详细信息?
【发布时间】:2019-12-08 21:48:42
【问题描述】:

我正在尝试使用以下代码导入 CSV 文件:

using CsvHelper;
using CsvHelper.Configuration;
\\\ ...
try
  {
     var csv = new CsvReader(csvReader, new CsvConfiguration { 
        HasHeaderRecord = false, Delimiter = ";" });
     records = csv.GetRecords<FileDataContainerDisplay>().ToList();
   }
catch (Exception)
   {
      throw new FileFormatException();
}

代码失败

抛出异常:CsvHelper.dll 中的“CsvHelper.TypeConversion.CsvTypeConverterException”

奇怪的是,用于处理以下类型文件的代码:

Date;CurveName;Gridpoint;Timebase;Value
1.1.1900 00:00:00;A;1;1;0.12
1.1.1900 00:00:00;A;1;2;0.23
1.1.1900 00:00:00;A;1;3;0.34
...

谁能指导我在哪里可以找到更多关于哪种类型转换失败的详细信息?

顺便说一句,FileFormatException 的定义比较无聊:

public class FileFormatException : Exception
{ }

参考文献

【问题讨论】:

  • 实际上我会构建自己的 csv 解析器,csv 非常原始,您可以在 50 行或更少的代码中自行处理。这里不需要另一个依赖项...修复您的异常:只需在 FileDataContainerDisplay 中使用字符串属性并自行解析数据类型

标签: c# csv csvhelper


【解决方案1】:

问题似乎是您的配置与您的文件不匹配。您的配置显示没有标题记录,但您的文件似乎有标题记录,因此它试图将“日期”一词读取为DateTime。当我查看内部异常时,我会得到更多信息。

The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.

您应该在 FileFormatException 类中包含 innerException。

public class FileFormatException : Exception
{
    public FileFormatException(string message, Exception innerException) : base(message, innerException)
    {
    }
}

catch (Exception e)
{
   throw new FileFormatException("Error message", e);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    相关资源
    最近更新 更多