From 3f8e7cb55167ba912c09e84e5d0524246d0e7e60 Mon Sep 17 00:00:00 2001 From: armin Date: Wed, 26 Jul 2023 10:20:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=A1=AB=E5=85=85?= =?UTF-8?q?=E6=97=B6=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/ExcelWriteFillExecutor.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java index 81524223..a9fc560c 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java @@ -16,6 +16,7 @@ import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.enums.WriteDirectionEnum; import com.alibaba.excel.enums.WriteTemplateAnalysisCellTypeEnum; import com.alibaba.excel.exception.ExcelGenerateException; +import com.alibaba.excel.metadata.data.DataFormatData; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import com.alibaba.excel.util.BeanMapUtils; @@ -32,6 +33,7 @@ import com.alibaba.excel.write.metadata.fill.FillConfig; import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -231,8 +233,19 @@ public class ExcelWriteFillExecutor extends AbstractExcelWriteExecutor { // Restyle if (fillConfig.getAutoStyle()) { Optional.ofNullable(collectionFieldStyleCache.get(currentUniqueDataFlag)) - .map(collectionFieldStyleMap -> collectionFieldStyleMap.get(analysisCell)) - .ifPresent(cellData::setOriginCellStyle); + .map(collectionFieldStyleMap -> collectionFieldStyleMap.get(analysisCell)) + .ifPresent(originCellStyle -> { + cellData.setOriginCellStyle(originCellStyle); + if (CellDataTypeEnum.DATE.equals(cellData.getType())) { + WriteCellStyle writeCellStyle = new WriteCellStyle(); + cellData.setWriteCellStyle(writeCellStyle); + DataFormatData dataFormatData = new DataFormatData(); + writeCellStyle.setDataFormatData(dataFormatData); + // 添加日期格式 + dataFormatData.setIndex(originCellStyle.getDataFormat()); + dataFormatData.setFormat(originCellStyle.getDataFormatString()); + } + }); } } else { StringBuilder cellValueBuild = new StringBuilder(); @@ -323,6 +336,9 @@ public class ExcelWriteFillExecutor extends AbstractExcelWriteExecutor { cellWriteHandlerContext.setCell(cell); rowWriteHandlerContext.setRow(row); rowWriteHandlerContext.setRowIndex(analysisCell.getRowIndex()); + Map collectionFieldStyleMap = + collectionFieldStyleCache.computeIfAbsent(currentUniqueDataFlag, key -> MapUtils.newHashMap()); + collectionFieldStyleMap.put(analysisCell, cell.getCellStyle()); return; } Sheet sheet = writeContext.writeSheetHolder().getSheet();