//导出表头
public void exportHeadData(XSSFSheet sheet,String[][] propertyDes,XSSFCellStyle style){
//表头部分
// 二级表头测试数据
/*String[][] propertyDes = {{"姓名","所属部门","职位","入职日期","转正日期","年假","","带薪病假","","调休剩余可休天数","本月加班天数","本月已休","","","","","",""},
{"","","","","","基数","剩余可休天数","基数","剩余可休天数","","","年假","调休","带薪病假","婚假","产假","丧假","事假"}};*/
//一级表头测试数据
/*String[][] propertyDes = {{"姓名","所属部门","职位","入职日期","转正日期","年假","123","带薪病假","123","调休剩余可休天数","本月加班天数","本月已休","123","12","123","123","12","123"}};*/
// 三级表头测试数据
/*String[][] propertyDes = {{"1","","2","3","","",""},
{"1","1","","3","","3",""},{"","","","3","3","3","3"}};*/
// 四级表头测试数据
/*String[][] propertyDes = {{"1","","2","3","","","","4","","","","","","",""},
{"1","1","","3","","3","","4","","","","4","","",""},{"","","","3","3","3","3","4","","4","","4","","4",""},
{"","","","","","","","4","4","4","4","4","4","4","4"}};*/
int mergerNum = 0 ; //合并数
//给单元格设置值
for(int i=0; i< propertyDes.length; i++){
XSSFRow row = sheet.createRow(i);
row.setHeight((short)700);
for(int j=0; j<propertyDes[i].length; j++){
XSSFCell cell = row.createCell(j);
cell.setCellStyle(style);
cell.setCellValue(propertyDes[i][j]);
}
}
Map<Integer,List<Integer>> map = new HashMap<Integer, List<Integer>>(); // 合并行时要跳过的行列
//合并列
for(int i=0; i<propertyDes[propertyDes.length-1].length; i++){
if("".equals(propertyDes[propertyDes.length-1][i])){
for(int j=propertyDes.length-2; j >=0 ;j--){
if(!"".equals(propertyDes[j][i])){
sheet.addMergedRegion(new CellRangeAddress(j,propertyDes.length-1,i,i)); // 合并单元格
break;
}else{
if(map.containsKey(j)){
List<Integer> list = map.get(j);
list.add(i);
map.put(j, list);
}else{
List<Integer> list = new ArrayList<Integer>();
list.add(i);
map.put(j, list);
}
}
}
}
}
//合并行
for(int i=0; i< propertyDes.length-1; i++){
for(int j=0; j<propertyDes[i].length; j++){
List<Integer> list = map.get(i);
if(list==null ||(list!=null&&!list.contains(j))){
if("".equals(propertyDes[i][j])){
mergerNum++ ;
if(mergerNum != 0 && j == (propertyDes[i].length-1)){
sheet.addMergedRegion(new CellRangeAddress(i,i,j-mergerNum,j)); // 合并单元格
mergerNum = 0 ;
}
}else {
if(mergerNum != 0){
sheet.addMergedRegion(new CellRangeAddress(i,i,j-mergerNum-1,j-1)); // 合并单元格
mergerNum = 0 ;
}
}
}
}
}
}