Перейти к основному содержимому

Установить цвет фона ячейки с помощью Apache POI

· 3 мин. чтения

1. Обзор

На листе Excel всегда выглядит элегантно, когда мы выделяем заголовок таблицы, изменяя цвет его фона. В этой статье описывается, как изменить цвет фона ячейки с помощью Apache POI .

Кроме того, мы рекомендуем прочитать наш учебник « Работа с Microsoft Excel в Java », чтобы узнать некоторые основы работы с Excel в Java.

2. Зависимость от Maven

Для начала нам нужно добавить poi-ooxml в качестве зависимости в наш pom.xml :

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.0</version>
</dependency>

3. Изменение цвета фона ячейки

3.1. Фон ячейки

На листе Excel мы можем изменить фон ячейки, просто заполнив его цветом или узором. На следующем изображении ячейка A1 заполнена голубым фоном, а ячейка B1 заполнена узорами. Этот узор имеет черный фон и светло-голубые пятна поверх него:

./1e14654287c48f899d779e9e0661e598.png

3.2. Код для изменения цвета фона

Apache POI предоставляет три метода изменения цвета фона. В классе CellStyle мы можем использовать для этой цели методы setFillForegroundColor , setFillPattern и setFillBackgroundColor . Список цветов определен в классе IndexedColors . Точно так же список шаблонов определяется в FillPatternType .

Иногда название setFillBackgroundColor может ввести нас в заблуждение . Но этого самого метода недостаточно для изменения фона ячейки. Чтобы изменить фон ячейки, заполнив ее сплошным цветом, мы используем методы setFillForegroundColor и setFillPattern . Первый метод сообщает, какой цвет заливать, а второй указывает, какой образец сплошной заливки использовать.

Следующий фрагмент представляет собой пример метода изменения фона ячейки, как показано в ячейке A1 :

public void changeCellBackgroundColor(Cell cell) {
CellStyle cellStyle = cell.getCellStyle();
if(cellStyle == null) {
cellStyle = cell.getSheet().getWorkbook().createCellStyle();
}
cellStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(cellStyle);
}

Чтобы изменить фон ячейки с помощью узора, нам нужно использовать два цвета : один цвет для заполнения всего фона и один для заполнения узора поверх первого цвета. Здесь нам нужно использовать все эти три метода.

Здесь используется метод setFillBackgroundColor для указания цвета фона. Мы не получаем никакого эффекта, используя только этот метод. Нам нужно использовать setFillForegroundColor для выбора второго цвета и setFillPattern для указания типа узора.

Следующий фрагмент представляет собой пример метода изменения фона ячейки, как показано в ячейке B1 :

public void changeCellBackgroundColorWithPattern(Cell cell) {
CellStyle cellStyle = cell.getCellStyle();
if(cellStyle == null) {
cellStyle = cell.getSheet().getWorkbook().createCellStyle();
}
cellStyle.setFillBackgroundColor(IndexedColors.BLACK.index);
cellStyle.setFillPattern(FillPatternType.BIG_SPOTS);
cellStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
cell.setCellStyle(cellStyle);
}

Дополнительные сведения о коде см. во всем классе Java и связанных с ним тестовых примерах JUnit .

4. Вывод

В этом кратком руководстве мы узнали, как изменить фон ячейки на листе Excel с помощью Apache POI.

Используя только три метода — setFillForegroundColor , setFillPattern и setFillBackgroundColor из класса CellStyle — мы можем легко изменить цвет фона ячейки и образец заполнения.

Примеры доступны на GitHub .