2009-12-16 8 views
7

Tôi đang sử dụng cụm Excel Interop cho dự án của tôi, nếu tôi muốn sử dụng bộ lọc tự động với sau đó thats có thể sử dụngLàm cách nào tôi có thể nhận Phạm vi các hàng được lọc bằng cách sử dụng Excel Interop?

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

nhưng làm thế nào tôi có thể nhận được hàng lọc ??

có ai có ý tưởng không ??

Trả lời

14

Khi bạn lọc phạm vi, bạn có thể truy cập vào các ô vượt qua tiêu chí lọc bằng cách sử dụng phương thức Range.SpecialCells, chuyển giá trị 'Excel.XlCellType.xlCellTypeVisible' để nhận các ô hiển thị.

Dựa trên mã ví dụ của bạn, trên, truy cập vào các tế bào có thể nhìn thấy nên tìm kiếm một cái gì đó như thế này:

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

Từ đó bạn có thể truy cập vào từng tế bào trong vùng khả kiến, thông qua bộ sưu tập 'Range.Cells' hoặc truy cập mỗi hàng bằng cách truy cập các khu vực thông qua bộ sưu tập 'Range.Areas' và sau đó lặp lại từng hàng trong bộ sưu tập 'Hàng' cho từng khu vực. Ví dụ:

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

Hy vọng điều này sẽ hữu ích!

Mike

+0

Có !! cảm ơn điều đó đã giúp ... – shahjapan

+1

Tuyệt vời, vui vì nó đã làm việc cho bạn, shahjapan. :) –

+3

Người downvoter có thể tự giải thích được không? Đây là một giải pháp sạch sẽ và nó đã làm việc cho các poster ban đầu. Có cái gì đó đã không làm việc cho bạn ở đây? –