【发布时间】: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