Tôi đang cố gắng đặt bộ lọc trên cột. Đây là cách tôi đã làm nó trong Interop:Thêm bộ lọc tự động cụ thể vào cột
private void CheckMasterFile(string path) {
var xlApp = new Excel.Application();
var xlWorkbook = xlApp.Workbooks.Open(path);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
foreach (var project in projects) {
if (string.IsNullOrEmpty(project.ProjectID.Value)) {
continue;
}
var xlRange = xlWorksheet.UsedRange;
if (xlWorksheet.AutoFilter != null) {
xlWorksheet.AutoFilterMode = false;
}
xlRange.AutoFilter(Field: 2, Criteria1: project.ProjectID.Value);
var result = xlRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible, Type.Missing);//only shows filtered values
double sum = 0;
foreach (Excel.Range row in result.Rows) {
if (row.Cells[2, 2].Value2() != null) {
if (!NOT_ALLOWED_RUBRIQUES.Contains((string)row.Cells[2, 8].Value2())) {//check if rubrique is allowed or not
//finish method
}
}
}
}
xlWorkbook.Close(SaveChanges: false);
xlApp.Quit();
}
Nhưng cách duy nhất tôi có thể làm điều gì đó với AutoFilter trong EPPlus là để kích hoạt hoặc vô hiệu hóa nó, chứ không phải để lọc một cột trên một giá trị cụ thể. Something như thế này:
sheet.Cells["A RANGE HERE"].AutoFilter = true;
Vì vậy, những gì tôi đang cố gắng để đạt được ở đây là để lọc một file Excel rất lớn về một giá trị cụ thể và sau đó chỉ hiển thị các hàng với những giá trị đó.
Những gì tôi đã hiểu là, bạn muốn excel được tạo nên chỉ có dữ liệu được lọc phải không? Ví dụ: nếu bạn có 1000 bản ghi và bộ lọc của bạn chỉ phù hợp với 50 hàng thì excel được tạo nên chỉ có 50 hàng .. Tôi có nhận được chính xác không? –
cũng không chính xác một tệp mới được xuất, tệp tôi đang mở chứa hơn 1000 bản ghi. Tôi muốn áp dụng một bộ lọc trên tệp đó để nó chỉ hiển thị cho tôi 50 bản ghi và tạo vòng lặp trên các ô đó thay vì lặp qua toàn bộ tệp và kiểm tra xem mỗi ô trong vòng lặp đó có bằng projectID (project.ProjectID.Value) hay không – Edward