| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package com.poyee.handler;
- import com.alibaba.excel.metadata.Head;
- import com.alibaba.excel.metadata.data.WriteCellData;
- import com.alibaba.excel.write.handler.CellWriteHandler;
- import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
- import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import com.poyee.annotation.DictTypeFormat;
- import com.poyee.annotation.ReadConverterExpFormat;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.poi.ss.usermodel.*;
- import java.lang.reflect.Field;
- import java.util.Arrays;
- import java.util.Objects;
- /**
- * 字典表查询注解监听
- * 列数据格式化
- */
- @Slf4j
- public class EasyDataFormatHandler implements CellWriteHandler {
- @Override
- public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
- Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
- }
- /**
- * @param writeSheetHolder
- * @param writeTableHolder
- * @param cell
- * @param head
- * @param relativeRowIndex
- * @param isHead
- */
- @Override
- public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell,
- Head head, Integer relativeRowIndex, Boolean isHead) {
- }
- @Override
- public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
- WriteCellData<?> cellData, Cell cell, Head head, Integer relativeRowIndex,
- Boolean isHead) {
- if (!isHead && !Objects.isNull(head) && head.getField().isAnnotationPresent(ReadConverterExpFormat.class)) {
- Field field = head.getField();
- field.setAccessible(true);
- ReadConverterExpFormat annotation = field.getAnnotation(ReadConverterExpFormat.class);
- if(!Objects.isNull(annotation) && StringUtils.isNotBlank(annotation.value())){
- log.info(" annotation.value() {} ",annotation.value());
- String cellValue = cellData.getStringValue();
- String[] expDatas = annotation.value().split(",");
- Arrays.asList(expDatas).forEach(expData -> {
- String[] expDataArr = expData.split("=");
- if(Objects.equals(cellValue,expDataArr[0])){
- cellData.setStringValue(expDataArr[1]);
- }
- });
- // cellData.setStringValue(annotation.value());
- }
- }else if(!isHead && !Objects.isNull(head) && head.getField().isAnnotationPresent(DictTypeFormat.class)){
- }
- }
- }
|