gpt4 book ai didi

c# - 如何使用 ExcelDataReader 从文件中删除空单元格和行?

转载 作者:太空狗 更新时间:2023-10-30 01:29:39 26 4
gpt4 key购买 nike

我正在使用 ExcelDataReader读取 excel 文件,但正在处理的文件每个有 16k 列和 1200 条记录。中间只有 52 列被填充,其他列为空,所以我想删除带有行的空列。

尝试过:

var dataset = reader.AsDataSet(new ExcelDataSetConfiguration() {
ConfigureDataTable = _ => new ExcelDataTableConfiguration() {
FilterRow = rowReader => rowReader.Depth != 0
}
});

帮助将不胜感激谢谢

最佳答案

据我所知,没有任何简单的方法可以过滤空列或行,我最好的尝试是:

// 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;
}

FilterRowFilterColumn 中使用 IExcelDataReader 参数是邪恶的!
我认为在主 reader 和每个 rowReader 中都引用了一个对象!所以你应该始终知道如何使用它们,正如你所看到的,我添加了一个技巧来让读者在使用后做好准备。 - HTH ;)

关于c# - 如何使用 ExcelDataReader 从文件中删除空单元格和行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50699477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com