2011-09-19 83 views
1

如何刪除數據集中的空行?刪除數據集中的空行

我正在讀取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(); 

回答

3

爲什麼不直接修改您的查詢只拉非空數據。

3

我發現每個解決方案都告訴我像修改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(); 
0

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

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