【问题标题】:C# - FileHelpers: Bad computing of DateTime variableC# - FileHelpers:DateTime 变量的错误计算
【发布时间】:2019-04-19 15:51:45
【问题描述】:

我有这个示例 CSV 文件:

Filip    Malýn        Male  1218-02-1994
Božena   Němcová      Female1804-02-1820
Jan      Žižka        Male  0719-09-1360
Che      Guevara      Male  2714-06-1928
AntoinedeSaint-ExupéryMale  1529-06-1900

我通过这个函数将它加载到代码中:

FileHelperEngine<T>().ReadFile(fileName);

但它以这个错误结束:

FileHelpers.BadUsageException: 'The string '18-02-1994' (length 10) at line 1 has less chars than the defined for BirthDate (11). You can use the [FixedLengthRecord(FixedMode.AllowLessChars)] to avoid this problem.'

如果我将[FixedLengthRecord(FixedMode.AllowLessChars)] 添加到代码中,则会出现以下错误:

FileHelpers.ConvertException: 'Error Converting 'al' to type: 'Int32'. '

这是我使用的一个类:

using System;
using FileHelpers;

namespace ImportExport.Mapping.FixedLength
{
    [FixedLengthRecord(FixedMode.AllowLessChars)]
    public class Person
    {
        [FieldFixedLength(9)]
        public String Name;

        [FieldFixedLength(13)]
        public String Surname;

        [FieldFixedLength(6)]
        public String Gender;

        [FieldFixedLength(2)]
        public Int32 OrderNum;

        [FieldFixedLength(11)]
        [FieldConverter(ConverterKind.Date, "dd-MM-yyyy")]
        public DateTime BirthDate;
    }
}

我已经计算了很多次,尝试了很多版本,但都没有成功。怎么了?

【问题讨论】:

  • [FieldFixedLength(11)] 应该是 [FieldFixedLength(10)]。 01-01-2000 是 10 个字符,而不是 11 个。
  • "dd-MM-yyyy".Length == 10 - 请注意错误消息指出。
  • 我想知道这个文件的编码,包括组合字符的使用,FileHelpers 正在使用的任何指定或假定的编码,以及它实际工作的是字符还是代码点.
  • 你做错了,它给出了一个错误。你把它改成了别的东西(提示 - AllowLessChars),你得到了一个不同的错误。您修复了第一个错误 - 但您是否记得要反转您尝试的 第二个 项?
  • 记录包含变音符号,所以实际大小不同的问题。

标签: c# csv export-to-csv filehelpers csv-import


【解决方案1】:

谢谢大家。解决方案是添加有关文件编码的信息。在我的情况下,将 FileHelperEngine&lt;T&gt;().ReadFile(fileName); 更改为 FileHelperEngine&lt;T&gt;(Encoding.UTF8).ReadFile(fileName);

【讨论】:

  • 仍然与代码不匹配,尽管你说出生日期是 11 个字符,但实际上它只有 10 个。很好,你解决了你的问题,但这不能是整个解决方案.
  • 是的,我已经在我的问题下方的评论部分承认了这一点。在我看来,由于失去连续性,我不会编辑有问题的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2013-07-06
  • 1970-01-01
相关资源
最近更新 更多