优化excel创建表格样式
This commit is contained in:
		| @@ -672,6 +672,46 @@ public class ExcelUtil<T> | ||||
|         style.setFont(totalFont); | ||||
|         styles.put("total", style); | ||||
|  | ||||
|         styles.putAll(annotationStyles(wb)); | ||||
|  | ||||
|         return styles; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据Excel注解创建表格样式 | ||||
|      *  | ||||
|      * @param wb 工作薄对象 | ||||
|      * @return 自定义样式列表 | ||||
|      */ | ||||
|     private Map<String, CellStyle> annotationStyles(Workbook wb) | ||||
|     { | ||||
|         Map<String, CellStyle> styles = new HashMap<String, CellStyle>(); | ||||
|         for (Object[] os : fields) | ||||
|         { | ||||
|             Excel excel = (Excel) os[1]; | ||||
|             String key = "data_" + excel.align() + "_" + excel.color(); | ||||
|             if (!styles.containsKey(key)) | ||||
|             { | ||||
|                 CellStyle style = wb.createCellStyle(); | ||||
|                 style = wb.createCellStyle(); | ||||
|                 style.setAlignment(excel.align()); | ||||
|                 style.setVerticalAlignment(VerticalAlignment.CENTER); | ||||
|                 style.setBorderRight(BorderStyle.THIN); | ||||
|                 style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|                 style.setBorderLeft(BorderStyle.THIN); | ||||
|                 style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|                 style.setBorderTop(BorderStyle.THIN); | ||||
|                 style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|                 style.setBorderBottom(BorderStyle.THIN); | ||||
|                 style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|                 Font dataFont = wb.createFont(); | ||||
|                 dataFont.setFontName("Arial"); | ||||
|                 dataFont.setFontHeightInPoints((short) 10); | ||||
|                 dataFont.setColor(excel.color().index); | ||||
|                 style.setFont(dataFont); | ||||
|                 styles.put(key, style); | ||||
|             } | ||||
|         } | ||||
|         return styles; | ||||
|     } | ||||
|  | ||||
| @@ -793,7 +833,7 @@ public class ExcelUtil<T> | ||||
|             { | ||||
|                 // 创建cell | ||||
|                 cell = row.createCell(column); | ||||
|                 setDataCell(cell, attr); | ||||
|                 cell.setCellStyle(styles.get("data_" + attr.align() + "_" + attr.color())); | ||||
|  | ||||
|                 // 用于读取对象中的属性 | ||||
|                 Object value = getTargetValue(vo, field, attr); | ||||
| @@ -836,34 +876,6 @@ public class ExcelUtil<T> | ||||
|         return cell; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 设置单元格样式 | ||||
|      *  | ||||
|      * @param cell 单元格 | ||||
|      * @param excel 注解信息 | ||||
|      */ | ||||
|     public void setDataCell(Cell cell, Excel excel) | ||||
|     { | ||||
|         CellStyle style = wb.createCellStyle(); | ||||
|         style.setAlignment(HorizontalAlignment.CENTER); | ||||
|         style.setVerticalAlignment(VerticalAlignment.CENTER); | ||||
|         style.setBorderRight(BorderStyle.THIN); | ||||
|         style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|         style.setBorderLeft(BorderStyle.THIN); | ||||
|         style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|         style.setBorderTop(BorderStyle.THIN); | ||||
|         style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|         style.setBorderBottom(BorderStyle.THIN); | ||||
|         style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); | ||||
|         style.setAlignment(excel.align()); | ||||
|         Font dataFont = wb.createFont(); | ||||
|         dataFont.setFontName("Arial"); | ||||
|         dataFont.setFontHeightInPoints((short) 10); | ||||
|         dataFont.setColor(excel.color().index); | ||||
|         style.setFont(dataFont); | ||||
|         cell.setCellStyle(style); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 设置 POI XSSFSheet 单元格提示或选择框 | ||||
|      *  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user