Kaynağa Gözat

fix:
easyExcel日期导出格式问题

18339543638 2 yıl önce
ebeveyn
işleme
8f7ada66b1

+ 34 - 0
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/converter/CustomDateDateConverter.java

@@ -0,0 +1,34 @@
+package cn.tr.module.excel.core.converter;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.alibaba.excel.util.DateUtils;
+import com.alibaba.excel.util.WorkBookUtil;
+
+import java.util.Date;
+
+/**
+ * Date and date converter
+ *
+ * @author Jiaju Zhuang
+ */
+public class CustomDateDateConverter implements Converter<Date> {
+    @Override
+    public Class<Date> supportJavaTypeKey() {
+        return Date.class;
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(Date value, ExcelContentProperty contentProperty,
+        GlobalConfiguration globalConfiguration) throws Exception {
+        WriteCellData<?> cellData = new WriteCellData<>(value);
+        String format = null;
+        if (contentProperty != null && contentProperty.getDateTimeFormatProperty() != null) {
+            format = contentProperty.getDateTimeFormatProperty().getFormat();
+        }
+        WorkBookUtil.fillDataFormat(cellData, format, DateUtils.DATE_FORMAT_10);
+        return cellData;
+    }
+}

+ 9 - 0
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/service/ExcelService.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.tr.module.api.sys.storage.SysStorageApi;
 import cn.tr.module.constant.ExcelConstant;
+import cn.tr.module.excel.core.converter.CustomDateDateConverter;
 import cn.tr.module.excel.core.dto.ExcelTemplateDescDTO;
 import cn.tr.module.excel.core.handler.read.CustomerReadListener;
 import cn.tr.module.excel.core.handler.write.CustomCellWriteHandler;
@@ -24,6 +25,9 @@ import cn.tr.plugin.eventbus.config.EventBus;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.converters.ConverterKeyBuild;
+import com.alibaba.excel.converters.DefaultConverterLoader;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
 import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
@@ -52,6 +56,11 @@ public class ExcelService {
     private static HorizontalCellStyleStrategy horizontalSampleCellStyleStrategy =
             new CustomHorizontalCellStyleStrategy(StyleUtils.getHeadStyle(), StyleUtils.getSampleContentStyle());
 
+    {
+        Map<ConverterKeyBuild.ConverterKey, Converter<?>> converterKeyConverterMap = DefaultConverterLoader.loadDefaultWriteConverter();
+        converterKeyConverterMap.put(ConverterKeyBuild.buildKey(Date.class),new CustomDateDateConverter());
+    }
+
     @Autowired
     private ISysExportSheetService exportSheetService;