2012-11-02 96 views
4

因此,我正在Excel文檔中進行一些搜索,但其他人打開過濾器並保持開啓狀態非常常見。當這些過濾器打開時,這些單元格不包含在工作表的「單元格」範圍中。關閉過濾器

有沒有辦法關閉這些自定義過濾器,以便我仍然可以訪問表單中的所有單元格?

這是我用它來尋找方法

Microsoft.Office.Interop.Excel.Range find = sheet.Cells.Find(tapeID, Type.Missing, 
Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlPart, 
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false, Type.Missing, Type.Missing); 

當過濾器上,我得到一個空的對象回來,不能做什麼,但與濾波器關的路上,我得到我需要什麼。

任何關於關閉濾波器的提示?

回答

5

我將測試首先看是否已經應用了過濾器,然後將其停用,如果它有:

if (xlSheet.AutoFilter != null) 
{ 
    xlSheet.AutoFilterMode = false; 
} 

這應該除去已經施加任何過濾併除去過濾器箭頭按鈕。

+0

有什麼辦法可以避免移除過濾箭頭按鈕? – Mizmor

+2

@Mizmor是的,一旦你確認'AutoFilter'不是'null',你就可以用'xlSheet.AutoFilter.ShowAllData()'顯示所有行。這使過濾器箭頭可見,但刪除任何實際的過濾。 –

+0

優秀!謝謝。 – Mizmor

2

您可以通過調用AutoFilter方法禁用所有過濾器,範圍兩次,無參數。

sheet.Cells.AutoFilter(); 
sheet.Cells.AutoFilter(); 

我不是很精明的互操作,但是你可能需要通過5 Type.MissingMissing.Value作爲參數。

第一個調用將關閉AutoFilter,如果關閉,第二個將打開,反之亦然。但是在任何一種情況下,由於過濾將不再有隱藏單元。

相關問題