Java Excel合并单元格设置样式
在处理Excel文件时,经常会遇到合并单元格的需求。合并单元格可以使表格更加美观,并且可以在一个单元格中展示多个数据。本文将介绍如何使用Java语言实现Excel合并单元格以及为合并后的单元格设置样式。
1. 导入依赖
首先,在Java项目中使用Apache POI库来操作Excel文件。在pom.xml中添加以下依赖项:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
2. 创建Excel文件
在开始之前,我们需要先创建一个Excel文件。可以使用以下代码创建一个简单的Excel文件:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtils {
public static void createExcel(String filePath) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, Excel!");
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
workbook.write(fileOutputStream);
workbook.close();
fileOutputStream.close();
}
public static void main(String[] args) throws Exception {
createExcel("example.xlsx");
}
}
运行以上代码,将在项目根目录下生成一个名为example.xlsx
的Excel文件,其中单元格A1中的内容为"Hello, Excel!"。
3. 合并单元格
接下来,我们来演示如何合并单元格。合并单元格可以使用CellRangeAddress
类来定义合并的区域。
以下是合并单元格的示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtils {
public static void mergeCells(String filePath) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
Row row1 = sheet.createRow(0);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("Hello, Excel!");
Row row2 = sheet.createRow(1);
Cell cell2_1 = row2.createCell(0);
cell2_1.setCellValue("Merged Cells");
Cell cell2_2 = row2.createCell(1);
cell2_2.setCellValue("Merged Cells");
CellRangeAddress mergedRegion = new CellRangeAddress(1, 1, 0, 1);
sheet.addMergedRegion(mergedRegion);
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
workbook.write(fileOutputStream);
workbook.close();
fileOutputStream.close();
}
public static void main(String[] args) throws Exception {
mergeCells("example.xlsx");
}
}
运行以上代码,将会在Excel文件中合并单元格B2和C2,使其显示为一个单元格,并且单元格中的内容为"Merged Cells"。
4. 设置合并后单元格的样式
合并后的单元格可以设置样式,例如字体、背景颜色、边框等。下面的示例代码演示了如何设置合并后单元格的样式。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtils {
public static void mergeCellsWithStyle(String filePath) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
Row row1 = sheet.createRow(0);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("Hello, Excel!");
Row row2 = sheet.createRow(1);
Cell cell2_1 = row2.createCell(0);
cell2_1.setCellValue("Merged Cells");
Cell cell2_2 = row2.createCell(1);
cell2_2.setCellValue("Merged Cells");
CellRangeAddress mergedRegion = new CellRangeAddress(1, 1, 0, 1);
sheet.addMergedRegion(mergedRegion);
// 创建样式
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 应用样式到合并后的单元格