如何删除数据集中的空行?
我正在从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();
答案 0 :(得分:3)
为什么不修改您的查询以仅提取非空数据。
答案 1 :(得分:3)
我找到的每个解决方案都告诉我修改Excel查询就像你拥有它一样。所以这没有多大帮助。您可以从表中创建一个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();
答案 2 :(得分:0)
使用Linq仅包含其任何列中具有非null /空值的行。
var filteredData = sourceDataTable.AsEnumerable()
.Where(row => row.ItemArray.Any(col => !String.IsNullOrWhiteSpace(col.ToString())))
.ToArray();