在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报告成为可能,非常适合在企业应用程序中使用。