1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【POI合并单元格】

【POI合并单元格】

时间:2021-04-23 10:47:05

相关推荐

【POI合并单元格】

POI合并单元格

public void writeTableDataWithMergeCell(PoiTableHeader header,List<?> dataList){HSSFCellStyle cellStyle=(HSSFCellStyle)header.getWorkbook().createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框// 设置所有单元格文字上下居中cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);int mergeCellsBegin = 1;int mergeCellsEnd = 1;int mergeCellCols=9;int startRow=header.getMaxRowSpan();List<FieldColumn> fieldColumns = header.getFieldColumns();int colsSize = fieldColumns.size();String tempVar ="";//当前前9列的值String preTempVar ="";//上次前9列的值for(int i=0;i<dataList.size();i++){preTempVar = tempVar;tempVar = "";Object obj=dataList.get(i);Row row=header.getSheet().createRow(startRow+i);for(int j=0;j< colsSize; j++){FieldColumn fieldColumn= fieldColumns.get(j);Cell cell=row.createCell(j);String field=fieldColumn.getField();Object val =BeanUtil.getFieldValueFromObject(obj, field);if(val!=null){if (j < mergeCellCols){tempVar += val.toString();}cell.setCellValue(val.toString());}cell.setCellStyle(cellStyle);}//如果 当前值!=上次值 B=当前行 E=当前行if (!tempVar.equals(preTempVar)){if (mergeCellsEnd>mergeCellsBegin){System.err.println("合并"+mergeCellsBegin+","+mergeCellsEnd);merge(header,mergeCellsBegin,mergeCellsEnd,mergeCellCols);}mergeCellsBegin = startRow+i;mergeCellsEnd = startRow+i;}//如果 当前值==上次值 B=BE=当前行if (tempVar.equals(preTempVar)){//mergeCellsBegin = startRow+i;for (int n=0;n<mergeCellCols;n++){row.getCell(n).setCellType(CELL_TYPE_BLANK );}mergeCellsEnd = startRow+i;}System.err.println("B:"+mergeCellsBegin+" E:"+mergeCellsEnd);}}private void merge(PoiTableHeader header, int mergeCellsBegin, int mergeCellsEnd, int mergeCellCols) {for (int j = 0; j < mergeCellCols; j++) {CellRangeAddress region = new CellRangeAddress(mergeCellsBegin, mergeCellsEnd, j, j);header.getSheet().addMergedRegion(region);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。