В Excel
стилях ячеек файлов находятся на уровне книги, а не на уровне листа или на уровне ячейки. Таким образом, ваш cell.getCellStyle()
получает стиль ячейки с уровня рабочей книги, который также может быть применен к другим ячейкам уже на других рабочих листах. Если вы затем измените этот стиль, это изменит все ячейки во всех листах, к которым применен этот стиль ячейки.
Сначала необходимо создать все необходимые стили ячеек на уровне книги, а затем применить эти стили к ячейкам или использовать методы CellUtil
. Использование CellUtil
методов должно быть предпочтительным подходом.
CellUtil методы предназначены для установки свойств стиля отдельной ячейки для отдельных ячеек. Затем методы внутренне решают, нужно ли создавать новые стили ячеек на уровне рабочей книги или уже существуют такие стили, которые нужно только применять.
В вашем случае это может выглядеть так:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellUtil;
import java.util.Map;
import java.util.HashMap;
...
void highlightMemberNames(Sheet individualSheet, String memberName) {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(CellUtil.FILL_PATTERN, FillPatternType.SOLID_FOREGROUND);
properties.put(CellUtil.FILL_FOREGROUND_COLOR, IndexedColors.LIGHT_GREEN.getIndex());
properties.put(CellUtil.ALIGNMENT, HorizontalAlignment.CENTER);
for (Row row : individualSheet) {
for (Cell cell : row) {
if (cell.getCellType() == CellType.STRING && cell.getStringCellValue().equals(memberName)) {
CellUtil.setCellStyleProperties(cell, properties);
}
}
}
}