Cách chỉnh background và front color trong excel với Apache poi

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu cách chỉnh màu background và màu chữ trong excel sử dụng Apache POI.

Depedency

Đầu tiên, chúng ta cần thêm phụ thuộc POI vào tệp pom.xml của dự án. Để làm việc với Microsoft Excel 2007+, chúng ta nên sử dụng poi-ooxml:

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

Chỉnh màu background và font

Để chỉnh màu background và font trong Apache POI chúng ta chỉ cần quan tâm đến CellStyle, nó cho phép chúng ta chỉnh màu thông qua một số hàm cơ bản, nhưng trước hết chúng ta cần khởi tạo một CellStyle object như sau:

CellStyle style = workbook.createCellStyle();

Chúng ta sẽ chỉnh màu background và kiểu tô màu với đoạn code mẫu sau

style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND); 

Để chỉnh màu font chữ chúng ta cần phải quan tâm đến Font class cung cấp một method cho phép chỉnh màu font chữ. Nhưng hãy lưu ý là phải gán lại cho CellStyle object đấy nhé.

Font font = workbook.createFont();
font.setColor(IndexedColors.RED.getIndex());
style.setFont(font);

Ví dụ hoàn chỉnh

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Main {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Color Test");
        Row row = sheet.createRow(0);

        CellStyle style = workbook.createCellStyle();
        style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
        style.setFillPattern(FillPatternType.BIG_SPOTS);
        Font font = workbook.createFont();
        font.setColor(IndexedColors.RED.getIndex());
        style.setFont(font);

        Cell cell1 = row.createCell(0);
        cell1.setCellValue("ID");
        cell1.setCellStyle(style);

        Cell cell2 = row.createCell(1);
        cell2.setCellValue("NAME");
        cell2.setCellStyle(style);

        FileOutputStream fos =new FileOutputStream(new File("deft.xlsx"));
        workbook.write(fos);
        fos.close();
        System.out.println("Done");
    }
}

Output:

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x