LinqToExcel を使用して Excel の行を C#/.NET プロジェクトのオブジェクトにマップしています。
データを変換するだけでなく、一部のデータが欠落している場合にユーザーに警告するように、変換関数に検証コードを入れました。例:
excel.AddTransformation<PaymentObject>(x => x.PaymentPeriod, cellvalue =>
{
if (cellvalue.Length == 0)
{
throw new Exception(String.Format(Errors.EmptyField, ColumnNames.PaymentPeriod, ColumnNames.EmployeeNumber, lastCheckedEmployeeNumber));
}
return CultureInfo.InvariantCulture.TextInfo.ToTitleCase(cellvalue);
});
ただし、Excel が下部に追加することがある空の行によってこの検証がトリガーされることは望ましくありません ( LinqToExcel の空白行を参照)。
私の問題は、次のようなものを呼び出すときに生の行データにアクセスできないため、そこに記載されているソリューションを使用できないことです
excel.Worksheet<SomeType>("WorksheetName").Where(row => row.Any(cell => cell != null));
これは、最初に変換が適用され、Where メソッドが変換結果に適用されるためです。
また、変換関数では、行内の他の値にアクセスできないため、それが単一の空のセル (間違い) であるか、行が完全に空であるかを確認できません。
変換を適用する前に空の行を除外することは可能ですか?