2013-04-18 17 views
0

我有一個包含多行和多列的Excel表,我在.NET應用程序的數據集中獲取它(使用C#)。當我通過簡單的SELECT查詢看到返回的數據集時,Excel工作表具有我想要的所需列,並且它們之間還有一些空白列,默認情況下它們的名稱分別爲F1,F2,F3等。我想要做的是刪除這些列,只獲得我想要的所需列。 在此先感謝。如何排除Excel數據集中沒有數據的默認命名列

回答

2

與數據表和數據視圖試試:

DataTable oldTable = dataSet.Tables[0]; 
DataTable newTable = oldTable.DefaultView.ToTable(false, "Only columns you want", "Only columns you want"); 

與所有列名的動態,你可以試試這個:

for (int col = dataTable.Columns.Count - 1; col >= 0; col--) 
{ 
    bool removeColumn = true; 
    foreach (DataRow row in dataTable.Rows) 
    { 
    if (!row.IsNull(col)) 
    { 
     removeColumn = false; 
     break; 
    } 
    } 
    if (removeColumn) 
    dataTable.Columns.RemoveAt(col); 
} 

或更短的LinQ版本:

for (var col = dataTable.Columns.Count - 1; col >= 0; col--) 
    { 
     bool removeColumn = dataTable.Rows.Cast<DataRow>().All(row => row.IsNull(col)); 
     if (removeColumn) 
      dataTable.Columns.RemoveAt(col); 
    } 
+0

我不能直接寫列名,因爲我必須在後面的代碼中動態處理它們。 –

+0

然後試試這個:http://stackoverflow.com/questions/1766902/remove-all-columns-with-no-data-from-datatable – Yeronimo

+0

它很接近,但無法正確地解決我所嘗試的列名不是null,但默認有一些值,例如。僱員編號,僱員名稱,F1,F2,工資,F4,加號我需要刪除F1,F2和F4。每次我上傳一個新的excel文件時,這些列都是動態的。 –