1

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 メソッドが変換結果に適用されるためです。

また、変換関数では、行内の他の値にアクセスできないため、それが単一の空のセル (間違い) であるか、行が完全に空であるかを確認できません。

変換を適用する前に空の行を除外することは可能ですか?

4

2 に答える 2