From 3d128ff189dfaece8d39ff44e580621db714c5c0 Mon Sep 17 00:00:00 2001 From: wangh <123456> Date: Fri, 20 Oct 2023 11:35:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/broad/ApiController.java | 3 +- .../com/haiwei/common/annotation/Excel.java | 65 ++++++++++++++++++- .../haiwei/common/utils/poi/ExcelUtil_v2.java | 12 ++-- 3 files changed, 70 insertions(+), 10 deletions(-) diff --git a/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/ApiController.java b/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/ApiController.java index 5b8f8c7..2548820 100644 --- a/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/ApiController.java +++ b/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/ApiController.java @@ -5,6 +5,7 @@ import com.haiwei.common.core.domain.AjaxResult; import static com.haiwei.common.core.domain.AjaxResult.*; import com.haiwei.common.utils.poi.ExcelUtil; +import com.haiwei.common.utils.poi.ExcelUtil_v2; import com.haiwei.manage.domain.BaseDeviceInfo; import com.haiwei.manage.domain.RecordRaramData; import com.haiwei.manage.service.IApiService; @@ -76,7 +77,7 @@ public class ApiController { public AjaxResult export(String name ,String type,String colms,Date beginTime, Date endTime) { List list = iApiService.queryPramList(beginTime, endTime); - ExcelUtil util = new ExcelUtil(RecordRaramData.class); + ExcelUtil_v2 util = new ExcelUtil_v2(RecordRaramData.class); return util.exportExcel(list, "数据记录"); } @ApiOperation(tags = {"60脱水机"}, value = "设备介绍") diff --git a/haiwei-common/src/main/java/com/haiwei/common/annotation/Excel.java b/haiwei-common/src/main/java/com/haiwei/common/annotation/Excel.java index 45e4eb7..d06ae51 100644 --- a/haiwei-common/src/main/java/com/haiwei/common/annotation/Excel.java +++ b/haiwei-common/src/main/java/com/haiwei/common/annotation/Excel.java @@ -1,9 +1,13 @@ package com.haiwei.common.annotation; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import java.math.BigDecimal; /** * 自定义导出Excel数据注解 @@ -45,9 +49,14 @@ public @interface Excel public String separator() default ","; /** - * 导出类型(0数字 1字符串) + * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) */ - public ColumnType cellType() default ColumnType.STRING; + public int scale() default -1; + + /** + * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN + */ + public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; /** * 导出时在excel中每个列的高度 单位为字符 @@ -79,6 +88,11 @@ public @interface Excel */ public String[] combo() default {}; + /** + * 是否需要纵向合并单元格,应对需求:含有list集合单元格) + */ + public boolean needMerge() default false; + /** * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. */ @@ -89,6 +103,51 @@ public @interface Excel */ public String targetAttr() default ""; + /** + * 是否自动统计数据,在最后追加一行统计数据总和 + */ + public boolean isStatistics() default false; + + /** + * 导出类型(0数字 1字符串 2图片) + */ + public ColumnType cellType() default ColumnType.STRING; + + /** + * 导出列头背景色 + */ + public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT; + + /** + * 导出列头字体颜色 + */ + public IndexedColors headerColor() default IndexedColors.WHITE; + + /** + * 导出单元格背景色 + */ + public IndexedColors backgroundColor() default IndexedColors.WHITE; + + /** + * 导出单元格字体颜色 + */ + public IndexedColors color() default IndexedColors.BLACK; + + /** + * 导出字段对齐方式 + */ + public HorizontalAlignment align() default HorizontalAlignment.CENTER; + + /** + * 自定义数据处理器 + */ +// public Class handler() default ExcelHandlerAdapter.class; + + /** + * 自定义数据处理器参数 + */ + public String[] args() default {}; + /** * 字段类型(0:导出导入;1:仅导出;2:仅导入) */ @@ -112,7 +171,7 @@ public @interface Excel public enum ColumnType { - NUMERIC(0), STRING(1); + NUMERIC(0), STRING(1), IMAGE(2); private final int value; ColumnType(int value) diff --git a/haiwei-common/src/main/java/com/haiwei/common/utils/poi/ExcelUtil_v2.java b/haiwei-common/src/main/java/com/haiwei/common/utils/poi/ExcelUtil_v2.java index 4e39e88..072fdaa 100644 --- a/haiwei-common/src/main/java/com/haiwei/common/utils/poi/ExcelUtil_v2.java +++ b/haiwei-common/src/main/java/com/haiwei/common/utils/poi/ExcelUtil_v2.java @@ -821,15 +821,15 @@ public class ExcelUtil_v2 // 写入列信息 cell.setCellValue(attr.name()); setDataValidation(attr, row, column); -// cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); + cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); if (isSubList()) { // 填充默认样式,防止合并单元格样式失效 -// sheet.setDefaultColumnStyle(column, styles.get(StringUtils.format("data_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor()))); -// if (attr.needMerge()) -// { -// sheet.addMergedRegion(new CellRangeAddress(rownum - 1, rownum, column, column)); -// } + sheet.setDefaultColumnStyle(column, styles.get(StringUtils.format("data_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor()))); + if (attr.needMerge()) + { + sheet.addMergedRegion(new CellRangeAddress(rownum - 1, rownum, column, column)); + } } return cell; }