Как перебрать все строки и ячейки в файле Excel

Я хочу использовать foreach для итерации по всем ячейкам в моем файле excel, чтобы установить один цвет переднего плана. Это то, что у меня есть до сих пор.

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Sheet1");
sheet = wb.getSheetAt(0);

for (HSSFRow myrow : sheet){
    for (HSSFCell mycell : myrow){
        //set foreground color here
    }
}

проблема заключается в утверждениях for (HSSFRow myrow : sheet) и for (HSSFCell mycell : myrow) Я:

может только перебирать массив или экземпляр java.lang.Iterable

проверил HSSFSheet и HSSFRow - они реализуют java.lang.Iterable(Row) и java.lang.Iterable(Cell) соответственно.

2 ответов


попробуйте это. Он компилирует ОК

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Sheet1");
sheet = wb.getSheetAt(0);

for (Row myrow : sheet) {
    for (Cell mycell : myrow) {
        //set foreground color here
    }
}

Я использую POI 3.7 стабильный


пожалуйста, рассмотрите возможность использования stream для более декларативной итерации стиля:

Workbook wb = WorkbookFactory.create(new FileInputStream("filename.xlsx"));    
Sheet sheet = wb.getSheetAt(0);

StreamSupport.stream(sheet.spliterator(), false)
         .filter(...)
         .map(...)
         .collect(Collectors.toList());