2009-12-16 65 views
7

我用Excel互操作程序集爲我的項目, 如果我想使用自動過濾器,那麼這就是可能使用如何使用Excel Interop獲得過濾行的範圍?

sheet.UsedRange.AutoFilter(1,SheetNames[1],Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlAnd,oMissing,false) 

,但我怎樣才能得到過濾後的行?

任何人都有想法?

回答

14

一旦過濾了範圍,就可以通過使用Range.SpecialCells方法訪問傳遞過濾條件的單元格,並傳入值爲'Excel.XlCellType.xlCellTypeVisible'的值以獲取可見單元格。

根據您的示例代碼,上面訪問可見單元應該是這個樣子:

Excel.Range visibleCells = sheet.UsedRange.SpecialCells(
           Excel.XlCellType.xlCellTypeVisible, 
           Type.Missing) 

從那裏,你可以訪問在可見光範圍內的每個細胞,通過「Range.Cells」集合,或訪問每一行,首先通過'Range.Areas'集合訪問區域,然後在每個區域的'行'集合中迭代每行。例如:

foreach (Excel.Range area in visibleCells.Areas) 
{ 
    foreach (Excel.Range row in area.Rows) 
    { 
     // Process each un-filtered, visible row here. 
    } 
} 

希望這有助於!

Mike

+0

是的!謝謝,幫助... – shahjapan 2009-12-18 12:40:39

+1

酷,很高興它爲你工作,shahjapan。 :) – 2009-12-18 15:00:45

+3

downvoter可以解釋自己嗎?這是一個乾淨的解決方案,它爲原始海報工作。在這裏有沒有爲你工作的東西? – 2012-12-26 19:43:32

相關問題