移动端的网站建设,s吗网站虚拟主机,江门网站开发多少钱,网站后台上传文字图片背景#xff1a;
网上大部分都不能直接使用#xff0c;为此总结一个方便入手且可用的工具#xff0c;用自定义注解实现 依赖包#xff1a;
dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion…背景
网上大部分都不能直接使用为此总结一个方便入手且可用的工具用自定义注解实现 依赖包
dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion3.3.4/version
/dependency实现过程
1.自定义ExcelRemark注解
Target(ElementType.FIELD)
Retention(RetentionPolicy.RUNTIME)
public interface ExcelRemark {/*** 文本内容*/String value( ) default ;/*** 批注行高, 一般不用设置* 这个参数可以设置不同字段 批注显示框的高度*/int remarkRowHigh() default 0;/*** 批注列宽, 根据导出情况调整* 这个参数可以设置不同字段 批注显示框的宽度*/int remarkColumnWide() default 0;
}2.DTO
public class regionDo {ExcelProperty(省份)ExcelRemark(value 必填)private String province;ExcelIgnoreprivate String provinceCode;ExcelProperty(地市)ExcelRemark(value 必填)private String city;
}3.批注处理类
public class CommentCellWriteHandler implements CellWriteHandler {private final MapInteger, ExcelComment notationMap;public CommentCellWriteHandler(MapInteger, ExcelComment notationMap) {this.notationMap notationMap;}Overridepublic void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {//表头批注if (isHead){Sheet sheet writeSheetHolder.getSheet();//画布Drawing? drawingPatriarch sheet.createDrawingPatriarch();if (!CollectionUtils.isEmpty(notationMap) notationMap.containsKey(cell.getColumnIndex())){ExcelComment excelComment notationMap.get(cell.getColumnIndex());if (Objects.nonNull(excelComment)){Comment comment drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), 0, (short) excelComment.getRemarkColumnWide(), 1));comment.setString(new XSSFRichTextString(excelComment.getRemarkValue()));cell.setCellComment(comment);}}}}/*** 获取批注Map**/public static MapInteger, ExcelComment getNotationMap(Class? clazz) {MapInteger, ExcelComment notationMap new HashMap();Field[] fields clazz.getDeclaredFields();//不使用下面方法就必须指定ExcelProperty的indexint index -1;for (Field field : fields) {index;if (!field.isAnnotationPresent(ExcelRemark.class)) {//不需要批注 并且 是无需导出字段则 索引回归if (field.isAnnotationPresent(ExcelIgnore.class)) {--index;}continue;}//批注存放实体ExcelComment excelComment new ExcelComment();//获取字段批注注解ExcelRemark ExcelRemark field.getAnnotation(ExcelRemark.class);excelComment.setRemarkValue(ExcelRemark.value());excelComment.setRemarkColumnWide(ExcelRemark.remarkColumnWide());notationMap.put(index, excelComment);}return notationMap;}}5.注册器
EasyExcel.write(response.getOutputStream(), RegionDo.class).registerWriteHandler(new CommentCellWriteHandler(CommentCellWriteHandler.getNotationMap(RegionDo.class))).sheet(sheet1)..doWrite(regionDoList)引用 https://blog.csdn.net/qq_43049310/article/details/130697234 https://blog.csdn.net/m0_61013974/article/details/134947917