私はこの単純なファイルを持っています。
first name 1,last name 1
first name 2
first name 3,last name 3
first name 4,last name 4
ケース 1: このクラスを使用してファイルからデータを読み取ります。
[DelimitedRecord(",")] public partial class Person { private string firstName; [FieldNullValue("default last name")] private string lastName; public string FirstName { get { return firstName; } set { firstName = value; } } public string LastName { get { return lastName; } set { lastName = value; } } }
そしてこのコード
ExcelStorage provider = new ExcelStorage(typeof(Person)); provider.FileName = "data.csv"; Person[] res = provider.ExtractRecords() as Person[];
データを正しく取得しました。配列の 2 番目の要素には姓 = デフォルトの姓があります。
ケース 2: 動的ビルド タイプを使用してデータを読み取ります。
DelimitedClassBuilder cb = new DelimitedClassBuilder("Person2", ","); cb.AddField("firstName", typeof(string)); cb.AddField("lastName", typeof(string)); cb.LastField.FieldNullValue = "default last name"; DelimitedFileEngine engine = new DelimitedFileEngine(cb.CreateRecordClass()); DataTable dt = engine.ReadFileAsDT("data.csv");
次の例外が発生します。Line: 2 Column: 0. Delimiter ',' not found after field 'firstName' (the record has less fields, the delimiter is wrong or the next field must be marked as optional).
このようにファイルを変更して、2 行目にセパレーターを追加してみましょう
first name 1,last name 1
first name 2,
first name 3,last name 3
first name 4,last name 4
- ケース 1: 静的型付きクラスを使用した読み取り: 同じ結果が得られます: デフォルトの姓があります
- ケース 2: 動的に作成されたオブジェクトを使用した読み取り: もうブレーキはかかりませんが、デフォルト値はなく、"" だけがあります。