Как удалить / сбросить фильтры, установленные на столбцы в Excel, используя Apache Poi Java? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть таблица в Excel с большим количеством строк.Я применил набор условий фильтра, используя apache poi, и прочитал данные таблицы.Мне нужно применить новые критерии фильтра к столбцам, но я удалил (?) Фильтры, которые уже установлены.

workSheet.setAutoFilter(CellRangeAddress.valueOf("A21:K21"));

final CTAutoFilter sheetFilter = workSheet.getCTWorksheet().getAutoFilter();
final CTFilterColumn filterColumn1 = sheetFilter.addNewFilterColumn();
filterColumn1.setColId(column[0]);
final CTFilterColumn filterColumn2 = sheetFilter.addNewFilterColumn();
filterColumn2.setColId(column[1]);
final CTFilter filter1 = filterColumn1.addNewFilters().insertNewFilter(0);
filter1.setVal(value[0]);
final CTFilter filter2 = filterColumn2.addNewFilters().insertNewFilter(0);
filter2.setVal(value[1]);

for(int rowNum = rowIndex; rowNum < workSheet.getPhysicalNumberOfRows(); rowNum++){
    XSSFRow row = workSheet.getRow(rowNum);
    for(int colNum = colStartIndex; colNum < colEndIndex; colNum++){
        XSSFCell cellValue = row.getCell(colNum);
        if ((cellValue.getColumnIndex() == column[0] && (!value[0].contains(getCellValue(cellValue)))) || (cellValue.getColumnIndex() == column[1] && (!value[1].contains(getCellValue(cellValue))))) {
            if (row.getRowNum() != rowIndex) { // skip header
                row.getCTRow().setHidden(true);
            }
        }
    }
}

Пожалуйста, помогите мне, как удалить фильтры.

...