easyexcel合并单元格写出
时间: 2025-08-19 11:55:09 浏览: 2
在使用 EasyExcel 库进行 Excel 文件操作时,合并单元格并写入数据是常见的需求之一。EasyExcel 提供了 `CellRangeAddress` 类用于定义合并区域,并通过 `Sheet` 对象的 `addMergedRegion()` 方法实现合并操作。以下是一个完整的示例,展示如何在写入数据的同时合并单元格。
### 示例代码
```java
import com.alibaba.easyexcel.EasyExcel;
import com.alibaba.easyexcel.util.ListUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.File;
import java.util.List;
public class EasyExcelMergeExample {
public static void main(String[] args) {
String fileName = "example_output.xlsx";
// 准备数据
List<List<String>> dataList = ListUtils.newArrayList();
dataList.add(ListUtils.newArrayList("张三", "85"));
dataList.add(ListUtils.newArrayList("李四", "90"));
// 写入数据并合并单元格
EasyExcel.write(new File(fileName)).head(head()).sheet("Sheet1").doWrite(dataList);
// 合并第一行的前两列(A1:B1)
try (Sheet sheet = EasyExcel.writerSheet(fileName).head(head()).build().getSheet()) {
CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, 1);
sheet.addMergedRegion(cellRangeAddress);
}
}
private static List<List<String>> head() {
List<List<String>> headList = ListUtils.newArrayList();
headList.add(ListUtils.newArrayList("姓名", "成绩"));
return headList;
}
}
```
### 实现说明
1. **数据准备**:使用 `List<List<String>>` 存储要写入的数据,每一行数据对应一个 `List<String>`。
2. **写入数据**:通过 `EasyExcel.write()` 方法写入数据到 Excel 文件中。
3. **合并单元格**:在数据写入完成后,通过 `Sheet.addMergedRegion()` 方法将指定区域的单元格合并。例如,合并第 0 行的第 0 列到第 1 列(即 A1:B1)[^1]。
4. **样式处理**:如果需要在合并单元格的同时设置样式(如居中对齐),可以继承 `AbstractHeadStyleStrategy` 类并重写 `setHeadCellStyle()` 方法,以实现更丰富的样式控制。
### 注意事项
- **合并区域索引**:`CellRangeAddress` 的构造函数接受四个参数:起始行、结束行、起始列、结束列。这些参数均从 0 开始计数。
- **合并顺序**:在写入数据后进行合并操作可以确保数据不会被覆盖或错位。
- **样式兼容性**:合并单元格后,建议检查样式是否正确应用,特别是在跨列合并时,避免内容显示异常。
###
阅读全文
相关推荐




















