Java POI导出Excel时 设置背景颜色

在日常的工作中,我们经常需要将数据导出到Excel中,以方便数据的查看和分析。而Apache POI是一个非常强大的Java库,可以用来读写Microsoft Office格式的文档。本文将介绍如何使用Java POI来导出Excel时设置单元格的背景颜色。

1. 导入POI库

首先,我们需要在Java项目中导入POI库。可以在Maven的pom.xml文件中添加以下依赖:

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

2. 创建Excel文档

接下来,我们需要创建一个Excel文档,并设置单元格的背景颜色。首先,我们需要创建一个Workbook对象,代表整个Excel文档。然后,我们可以创建一个Sheet对象,代表一个工作表。最后,我们可以创建Row对象和Cell对象,分别代表行和单元格。

以下是一个简单的示例代码:

// 创建Workbook对象
Workbook workbook = new XSSFWorkbook();

// 创建Sheet对象
Sheet sheet = workbook.createSheet("Sheet1");

// 创建Row对象
Row row = sheet.createRow(0);

// 创建Cell对象
Cell cell = row.createCell(0);

// 设置单元格的值
cell.setCellValue("Hello World");

// 设置单元格的背景颜色
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(cellStyle);

// 保存Excel文档
try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
    workbook.write(outputStream);
}

在上面的示例中,我们先创建了一个Workbook对象,然后创建了一个Sheet对象。接着,我们创建了一个Row对象和一个Cell对象,将值设置为"Hello World"。最后,我们创建了一个CellStyle对象,并设置其背景颜色为黄色。最后,将CellStyle对象应用到单元格中。

3. 设置不同的背景颜色

除了设置单元格的背景颜色为黄色,Java POI还支持设置其他颜色,如红色、绿色、蓝色等。可以使用IndexedColors类提供的颜色常量来设置单元格的背景颜色。

以下是一个设置不同背景颜色的示例代码:

CellStyle redCellStyle = workbook.createCellStyle();
redCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
redCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

CellStyle greenCellStyle = workbook.createCellStyle();
greenCellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
greenCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

CellStyle blueCellStyle = workbook.createCellStyle();
blueCellStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex());
blueCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

Row row1 = sheet.createRow(1);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("Red");
cell1.setCellStyle(redCellStyle);

Row row2 = sheet.createRow(2);
Cell cell2 = row2.createCell(0);
cell2.setCellValue("Green");
cell2.setCellStyle(greenCellStyle);

Row row3 = sheet.createRow(3);
Cell cell3 = row3.createCell(0);
cell3.setCellValue("Blue");
cell3.setCellStyle(blueCellStyle);

在上面的示例中,我们创建了三个不同颜色的CellStyle对象,分别为红色、绿色和蓝色。然后,我们创建了三个行和单元格,并将不同颜色的CellStyle对象应用到单元格中。

4. 完整代码示例

以下是一个完整的代码示例,将数据导出到Excel并设置单元格的背景颜色:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

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

public class ExcelExporter {

    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // 设置黄色背景颜色
        CellStyle yellowCellStyle = workbook.createCellStyle();
        yellowCellStyle.setFillForegroundColor