Sto provando a impostare un filtro su una colonna. Questo è il modo in cui l'ho fatto in Interop:Aggiunta di un filtro automatico specifico su una colonna
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();
}
Ma l'unico modo che posso fare qualcosa con il filtro automatico in EPPlus è quello di abilitare o disabilitare, non filtrare una colonna su un valore specifico. Qualcosa di simile a questo:
sheet.Cells["A RANGE HERE"].AutoFilter = true;
Quindi quello che sto cercando di realizzare è quello di filtrare un file enorme di Excel su un valore specifico e poi mostrare solo le righe con quei valori.
Quello che ho capito è, si vuoi che l'Excel generato abbia solo i dati filtrati, giusto? Ad esempio: se hai 1000 record e il tuo filtro corrisponde solo a 50 righe, l'Excel generato dovrebbe avere solo 50 righe. Sto ottenendo correttamente? –
beh, non esattamente un nuovo file generato, il file che sto aprendo contiene oltre 1000 record. Voglio applicare un filtro su quel file in modo che mi mostri solo 50 record e crei un ciclo su quelle celle invece di scorrere l'intero file e controllare se ciascuna cella in quel ciclo è uguale a projectID (project.ProjectID.Value) – Edward