2009-12-16 8 views
7

Sto utilizzando Excel assemblee di interoperabilità per il mio progetto, se voglio utilizzare il filtro automatico con l'allora questo è possibile utilizzandoCome posso ottenere l'intervallo di righe filtrate usando Excel Interop?

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

ma come posso ottenere le righe filtrate ??

qualcuno può avere idea ??

risposta

14

Dopo aver filtrato l'intervallo, è possibile accedere alle celle che superano i criteri del filtro utilizzando il metodo Range.SpecialCells, passando in un valore di 'Excel.XlCellType.xlCellTypeVisible' per ottenere le celle visibili.

Sulla base della sua codice di esempio, al di sopra, l'accesso alle celle visibili dovrebbe essere simile a questo:

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

Da lì si può accedere a ogni cella nel campo del visibile, attraverso la collezione '' Range.Cells oppure accedi a ciascuna riga, accedendo per prima cosa alle aree tramite la raccolta 'Range.Areas' e quindi ripetendo ogni riga all'interno della raccolta 'Righe' per ogni area. Ad esempio:

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

Spero che questo aiuti!

Mike

+0

Sì !! grazie che ha aiutato ... – shahjapan

+1

Cool, felice ha funzionato per te, Shahjapan. :) –

+3

Il down-rider può spiegarsi? Questa è una soluzione pulita e ha funzionato per il poster originale. C'è qualcosa che non ha funzionato per te qui? –