import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class ExcelMergeCellsExample {
public static void main(String[] args) throws Exception {
// 创建一个新的工作簿
Workbook workbook = new XSSFWorkbook();
// 创建一个新的工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建新行
Row row = sheet.createRow(0);
// 开始合并单元格并赋值
CellStyle style = workbook.createCellStyle(); // 创建单元格样式
style.setAlignment(HorizontalAlignment.CENTER); // 设置水平居中对齐
Cell cell1 = row.createCell(0);
cell1.setCellValue("合并单元格并居中对齐");
cell1.setCellStyle(style);
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
Cell cell2 = row.createCell(3);
cell2.setCellValue("合并单元格并居中对齐");
cell2.setCellStyle(style);
sheet.addMergedRegion(new CellRangeAddress(0, 0, 3, 5));
Cell cell3 = row.createCell(7);
cell3.setCellValue("合并单元格并居中对齐");
cell3.setCellStyle(style);
sheet.addMergedRegion(new CellRangeAddress(0, 0, 7, 8));
// 结束合并单元格
// 保存工作簿到文件
String filename = "mergecells.xlsx";
FileOutputStream fos = new FileOutputStream(filename);
workbook.write(fos);
fos.close();
System.out.println("工作簿已保存到文件:" + filename);
}
}
```
解释:
- `Cell cell1 = row.createCell(0);`:创建新单元格并指定其在第1列。
- `sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));`:合并第1行的第1到第3列。
- `Cell cell2 = row.createCell(3);`:创建新单元格并指定其在第4列。
- `sheet.addMergedRegion(new CellRangeAddress(0, 0, 3, 5));`:合并第1行的第4到第6列。
- `Cell cell3 = row.createCell(7);`:创建新单元格并指定其在第8列。
- `sheet.addMergedRegion(new CellRangeAddress(0, 0, 7, 8));`:合并第1行的第8和第9列。
在示例中,我们首先创建了一行,然后在指定位置创建单元格并赋值。最后使用`sheet.addMergedRegion()`方法将多个单元格合并,并使用`CellStyle`类设置单元格的样式,使其水平居中对齐。