这一块比较简单,通俗易懂,关键点在于
new CellRangeAddress里面的参数问题,
参数1可以理解为合并单元格长度开始值的索引
参数2可以理解为合并单元格长度结束时的索引
参数3可以理解为合并单元格宽度开始值的索引
参数4可以理解为合并单元格宽度结束时的索引
package com.test;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelExample {
public static void main(String[] args) {
try (Workbook workbook = WorkbookFactory.create(true)) {
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行
Row row1 = sheet.createRow(0);
// 创建单元格
Cell cell1 = row1.createCell(1);
cell1.setCellValue("Merged Cells");
CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
cell1.setCellStyle(style);
// 合并单元格范围为 B1 到 E1
sheet.addMergedRegion(new CellRangeAddress(
2, // 第一个单元格的行索引(从0开始)
3, // 第一个单元格的列索引(从0开始)
0, // 最后一个单元格的行索引(从0开始)
12 // 最后一个单元格的列索引(从0开始)
));
// 保存到文件
try (FileOutputStream fileOut = new FileOutputStream("output.xlsx")) {
workbook.write(fileOut);
System.out.println("Excel 文件已成功创建!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}