Подтвердить что ты не робот

Настройка цвета переднего плана для HSSFCellStyle всегда выдается черным цветом

Я использую POI для создания электронной таблицы Excel на Java. У меня есть следующий код, используемый для создания строки заголовка:

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Report");

// some more code

HSSFRow row = sheet.createRow(0);

HSSFCell cell = row.createCell(cellNumber);
HSSFCellStyle cellStyle = wb.createCellStyle();

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setColor(HSSFColor.WHITE.index);

cellStyle.setFont(font);
cell.setCellStyle(cellStyle);

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

4b9b3361

Ответ 1

Я получил это, чтобы работать. Мне пришлось установить цвет переднего плана, чтобы сделать цвет фона (??).

Итак, я изменил:

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);

в

cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);

и это сработало!

Ответ 2

Если вы устанавливаете цвет переднего плана, используйте

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

Если вы задаете цвет фона, используйте

style.setFillPattern(FillPatternType.THICK_BACKWARD_DIAG);

или

style.setFillPattern(FillPatternType.THIN_BACKWARD_DIAG);

Цвет переднего плана и фона кажется "стек" (красный + синий = фиолетовый), если вы задаете шаблон заполнения перед тем, как заполнить фоновый узор, но не наоборот. Есть несколько других шаблонов заливки, которые вы можете выбрать. Обратите внимание, что цвет не будет применяться, если вы не измените шаблон заполнения по умолчанию.

CellStyle.SOLID_FOREGROUND устарел в версии 3.15+. Вместо этого используйте FillPatternType.SOLID_FOREGROUND.