删除数据集中的空行

本文关键字:集中 数据 数据集 删除 | 更新日期: 2023-09-27 18:08:57

如何删除数据集中的空行?

我正在从底部有几个空行的excel电子表格中读取数据。

下面是我的代码:
ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='"Excel 12.0 Xml;HDR=YES;IMEX=1'";", VariableFile);
OleDbConnection objConn = new OleDbConnection(ConnectionString);
objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Requirements$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1);
objConn.Close();

删除数据集中的空行

为什么不直接修改查询,只提取非空数据呢?

我找到的每个解决方案都告诉我修改Excel查询,就像你拥有它一样。所以这没什么帮助。您可以从您的Table中创建一个DataView来查看非空白行。你知道之前的专栏是什么吗?即使您不这样做,您仍然可以遍历列名并为DataView构建一个过滤器字符串。

string filter = "";
foreach (DataColumn dc in dt.Columns)
{
    filter += dc.ColumnName + " <> '' ";
    if (dt.Columns[dt.Columns.Count-1].ColumnName != dc.ColumnName)
    {
        filter += " AND ";
    }
}
DataView view = new DataView(dt);
view.RowFilter = filter;
dt = view.ToTable();

使用Linq只包含在其任何列中具有非空/空白值的行。

var filteredData = sourceDataTable.AsEnumerable()
         .Where(row => row.ItemArray.Any(col => !String.IsNullOrWhiteSpace(col.ToString())))
         .ToArray();