EasyDataFormatHandler.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.poyee.handler;
  2. import com.alibaba.excel.metadata.Head;
  3. import com.alibaba.excel.metadata.data.WriteCellData;
  4. import com.alibaba.excel.write.handler.CellWriteHandler;
  5. import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
  6. import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
  7. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  8. import com.poyee.annotation.DictTypeFormat;
  9. import com.poyee.annotation.ReadConverterExpFormat;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.apache.poi.ss.usermodel.*;
  12. import java.lang.reflect.Field;
  13. import java.util.Arrays;
  14. import java.util.Objects;
  15. /**
  16. * 字典表查询注解监听
  17. * 列数据格式化
  18. */
  19. @Slf4j
  20. public class EasyDataFormatHandler implements CellWriteHandler {
  21. @Override
  22. public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
  23. Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
  24. }
  25. /**
  26. * @param writeSheetHolder
  27. * @param writeTableHolder
  28. * @param cell
  29. * @param head
  30. * @param relativeRowIndex
  31. * @param isHead
  32. */
  33. @Override
  34. public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell,
  35. Head head, Integer relativeRowIndex, Boolean isHead) {
  36. }
  37. @Override
  38. public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
  39. WriteCellData<?> cellData, Cell cell, Head head, Integer relativeRowIndex,
  40. Boolean isHead) {
  41. if (!isHead && !Objects.isNull(head) && head.getField().isAnnotationPresent(ReadConverterExpFormat.class)) {
  42. Field field = head.getField();
  43. field.setAccessible(true);
  44. ReadConverterExpFormat annotation = field.getAnnotation(ReadConverterExpFormat.class);
  45. if(!Objects.isNull(annotation) && StringUtils.isNotBlank(annotation.value())){
  46. log.info(" annotation.value() {} ",annotation.value());
  47. String cellValue = cellData.getStringValue();
  48. String[] expDatas = annotation.value().split(",");
  49. Arrays.asList(expDatas).forEach(expData -> {
  50. String[] expDataArr = expData.split("=");
  51. if(Objects.equals(cellValue,expDataArr[0])){
  52. cellData.setStringValue(expDataArr[1]);
  53. }
  54. });
  55. // cellData.setStringValue(annotation.value());
  56. }
  57. }else if(!isHead && !Objects.isNull(head) && head.getField().isAnnotationPresent(DictTypeFormat.class)){
  58. }
  59. }
  60. }