Как изменить цвет текста и заливку Fillcolor

Как изменить цвет шрифта заголовка на белый и заполнить зеленый? Это классы, которые я использую:

import static org.apache.poi.ss.usermodel.CellStyle.*
import static org.apache.poi.ss.usermodel.IndexedColors.*
import org.apache.poi.hssf.usermodel.*
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.ss.usermodel.Cell
import org.apache.poi.ss.usermodel.CellStyle
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.ss.usermodel.Sheet
import org.apache.poi.ss.usermodel.Workbook
import org.apache.poi.ss.usermodel.Font

И это код, где, я считаю, он должен быть вставлен.

Font headerFont = wb.createFont();
headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD)
CellStyle headerStyle = wb.createCellStyle()
headerStyle.setFont(headerFont)

cellMOPID.setCellStyle(headerStyle)
cellType.setCellStyle(headerStyle)
cellStatus.setCellStyle(headerStyle)
cellState.setCellStyle(headerStyle)
cellStartDate.setCellStyle(headerStyle)
cellEndDate.setCellStyle(headerStyle)
cellDesc.setCellStyle(headerStyle)

Ответ 1

     HSSFCellStyle cellStyle = workBook.createCellStyle();        
     HSSFFont font = wb.createFont();
     font.setFontName(XSSFFont.DEFAULT_FONT_NAME);
     font.setFontHeightInPoints((short)10);
     font.setColor(IndexedColors.BLUE.getIndex());
     cellStyle.setFont(font);
    //the version i am using is poi-3.8

Ответ 2

Если вы хотите установить цвет как простой сотовый стиль... вы можете написать код.

 cell.setCellValue("Header Text");
 XSSFCellStyle headerStyle = wb.createCellStyle();
 Font headerFont = wb.createFont();
 headerStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
 headerFont.setColor(IndexedColors.WHITE.getIndex());
 headerStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
 headerStyle.setFont(headerFont);
 cell.setCellStyle(headerStyle);

Это заполнит ячейку ЗЕЛЕНЫМ цветом, а шрифт будет выделен жирным цветом WHITE

Ответ 3

Для файла xls я проверил следующее и отлично работает с моей стороны.

Мне нужно импортировать следующее:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;

и часть кода следующая:

    FileInputStream fin = new FileInputStream (XLSFileAddress);
    HSSFWorkbook wb = new HSSFWorkbook(fin);
    HSSFCell cell=wb.getSheetAt(2).getRow(0).getCell(0);
    cell.setCellValue("Header Text");
    Font headerFont = wb.createFont();
    headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
    CellStyle headerStyle = wb.createCellStyle();
    headerStyle.setFont(headerFont);
    headerStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
    headerFont.setColor(IndexedColors.WHITE.getIndex());
    headerStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
    cell.setCellStyle(headerStyle);
    FileOutputStream fileOut = new FileOutputStream(XLSFileAddress);
    wb.write(fileOut);
    fileOut.close();

Результатом этого кода является первая ячейка первого строчка листа со вторым индексом, будет отображаться текст "Текст заголовка" с цветом ячейки, так как зеленый и цвет текста белый с жирным шрифтом.

Я использую apache POI 3.9.