私の知る限り、空の列または行をフィルタリングする簡単な方法はありません:
// use ExcelDataTableConfiguration.FilterRow to filter empty rows
FilterRow = rowReader =>
{
var hasData = false;
for (var i = 0; i < rowReader.FieldCount; i++)
{
if (rowReader[i] == null || string.IsNullOrEmpty(rowReader[i].ToString()))
{
continue;
}
hasData = true;
break;
}
return hasData;
},
// use ExcelDataTableConfiguration.FilterColumn to filter empty columns
FilterColumn = (rowReader, colIndex) =>
{
var hasData = false;
rowReader.Reset();
// this will skip first row as it is name of column
rowReader.Read();
while (rowReader.Read())
{
if (rowReader[colIndex] == null ||
string.IsNullOrEmpty(rowReader[colIndex].ToString()))
{
continue;
}
hasData = true;
break;
}
// below codes do a trick!
rowReader.Reset();
rowReader.Read();
return hasData;
}
IExcelDataReader
の使用 FilterRow
内の引数 または FilterColumn
悪です!
メインの reader
で考えます そして各 rowReader
1 つのオブジェクトを参照しています。そのため、使用後にリーダーを準備するためのトリックを追加することがわかるように、それらの使用方法を常に認識しておく必要があります。 -HTH;)