Workbook workbook = new SXSSFWorkbook(1000);
private void merge(Workbook workbook,int sheetCount){
for(int i =0;i<sheetCount;i++){
Sheet sheetMeger = workbook.getSheet("报表页-"+i);
int lasetRowNum = sheetMeger.getLastRowNum();
if(lasetRowNum > 1){
int rowNum = 1;
int rowNumNext = 1;
//z这个地方可以灵活设定有哪些列需要合并,我现在是前3列合并
for(int k = 0 ;k< 3 ;k++){
while(rowNumNext < lasetRowNum ){
rowNumNext = mergeRow(sheetMeger,rowNum,rowNumNext,k,k);
sheetMeger.addMergedRegion(new CellRangeAddress(rowNum,rowNumNext,k,k));
rowNum = rowNumNext + 1;
rowNumNext = rowNumNext + 1;
}
rowNum = 1;
rowNumNext = 1;
}
}
}
}
private int mergeRow(Sheet sheetMeger ,int startRow,int endRow,int startCols,int endCols){
int rownNum = sheetMeger.getLastRowNum();
Row cRow = sheetMeger.getRow(startRow);
Row nRow = sheetMeger.getRow(endRow + 1);
if(endRow< rownNum && cRow.getCell(startCols).getStringCellValue().equals(nRow.getCell(endCols).getStringCellValue())){
return mergeRow( sheetMeger , startRow, ++endRow,startCols,endCols);
}else{
return endRow ;
}
}