在Java中操作Excel文件,常常涉及到对单元格样式的设置。Apache POI是一个常用的Java库,能够方便地读写Excel文件。在这篇文章中,我们将详细介绍如何通过CellStyle属性设置Excel单元格的常用样式,并给出代码示例。

1. 引入Apache POI依赖

首先,需要在项目中引入Apache POI的依赖。如果你使用Maven,可以在pom.xml中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version> <!-- 请确认最新版本 -->
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version> <!-- 请确认最新版本 -->
</dependency>

2. 创建工作簿和工作表

首先,我们需要创建一个Excel工作簿和一个工作表。以下是创建工作簿和工作表的基本代码:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelStyleExample {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("样式示例");

        // 后续代码将添加样式
    }
}

3. 设置单元格样式

CellStyle用于定义单元格的样式属性。下面是一些常见的样式设置:

3.1. 字体样式设置

Font font = workbook.createFont();
font.setFontName("Arial");
font.setFontHeightInPoints((short) 12);
font.setBold(true);
font.setColor(IndexedColors.RED.getIndex());

CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);

3.2. 填充样式设置

cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

3.3. 边框样式设置

cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());

3.4. 对齐方式设置

cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

4. 应用样式到单元格

创建单元格并应用我们之前定义的样式:

Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("样式示例");
cell.setCellStyle(cellStyle);

5. 写入并保存Excel文件

最后,将工作簿写入到文件并关闭:

try (FileOutputStream fileOut = new FileOutputStream("styled_excel_example.xlsx")) {
    workbook.write(fileOut);
} finally {
    workbook.close();
}

综合代码示例

完整的代码示例如下:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelStyleExample {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("样式示例");

        // 创建字体
        Font font = workbook.createFont();
        font.setFontName("Arial");
        font.setFontHeightInPoints((short) 12);
        font.setBold(true);
        font.setColor(IndexedColors.RED.getIndex());

        // 创建单元格样式
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setFont(font);
        cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        cellStyle.setBorderBottom(BorderStyle.THIN);
        cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setBorderLeft(BorderStyle.THIN);
        cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setBorderRight(BorderStyle.THIN);
        cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setBorderTop(BorderStyle.THIN);
        cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setAlignment(HorizontalAlignment.CENTER);
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

        // 创建行和单元格
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("样式示例");
        cell.setCellStyle(cellStyle);

        // 写入文件
        try (FileOutputStream fileOut = new FileOutputStream("styled_excel_example.xlsx")) {
            workbook.write(fileOut);
        } finally {
            workbook.close();
        }
    }
}

结论

通过以上步骤,我们可以灵活地使用Apache POI库来设置Excel单元格的各种样式属性。可以根据需要调整字体、颜色、边框、填充与对齐等样式,以达到想要的效果。这种方式使得生成漂亮的Excel报告成为可能,非常适合在企业应用程序中使用。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部