// 设置格式样式
HSSFCellStyle cellStyle = (HSSFCellStyle) workbook.createCellStyle();
// 设置所有单元格文字左右居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
// 设置所有单元格文字上下居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//将需要合并的列,放入数组
int[] arr = new int[]{13,14,15,16};
//根据唯一标识来id判断,合并对应的单元格
List<Excel> merge = merge(dataList, arr);
for (Excel excel : merge) {
sheet.addMergedRegion(new CellRangeAddress(excel.getStartRow(),excel.getEndRow(),excel.getStartCol(),excel.getEndCol()));
}
//传入导出的对象集合,并传入需要合并的列数组
private static List<Excel> merge(List<Contract> list, int[] arr){
int start = 1;//记录开始行号(0行为表头,需要去除)
int end = 1;//记录结束行号
int count = 1;//记录结束行号
List<Excel> excel = new ArrayList<Excel>();
//遍历集合,判断,id一样的有几个
for (int i = 0; i < list.size(); i++) {
Integer id1 = list.get(i).getId();
Integer id2 = 0;
if (i+1<list.size()){
id2 = list.get(i + 1).getId();
}
if (id1.equals(id2)){
end = i+2;
}else {
if (start != end){
start = count;
for (int a : arr) {
excel.add(new Excel(start,end,a,a));
}
}
count = i+2;
start =end;
}
}
return excel;
}
// 设置格式样式
HSSFCellStyle cellStyle = (HSSFCellStyle) workbook.createCellStyle();
// 设置所有单元格文字左右居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
// 设置所有单元格文字上下居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//将需要合并的列,放入数组
int[] arr = new int[]{13,14,15,16};
//根据唯一标识来id判断,合并对应的单元格
List<Excel> merge = merge(dataList, arr);
for (Excel excel : merge) {
sheet.addMergedRegion(new CellRangeAddress(excel.getStartRow(),excel.getEndRow(),excel.getStartCol(),excel.getEndCol()));
}
//传入导出的对象集合,并传入需要合并的列数组
private static List<Excel> merge(List<Contract> list, int[] arr){
int start = 1;//记录开始行号(0行为表头,需要去除)
int end = 1;//记录结束行号
int count = 1;//记录结束行号
List<Excel> excel = new ArrayList<Excel>();
//遍历集合,判断,id一样的有几个
for (int i = 0; i < list.size(); i++) {
Integer id1 = list.get(i).getId();
Integer id2 = 0;
if (i+1<list.size()){
id2 = list.get(i + 1).getId();
}
if (id1.equals(id2)){
end = i+2;
}else {
if (start != end){
start = count;
for (int a : arr) {
excel.add(new Excel(start,end,a,a));
}
}
count = i+2;
start =end;
}
}
return excel;
}