From f5b90af6d01dcf82d1978c156f0882181807e1e9 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 24 八月 2021 14:28:39 +0800 Subject: [PATCH] add 增加 导出雪花id excel失真问题 --- ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java | 51 +++++++++++++++++++++++++ ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java | 4 ++ ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 3 + ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java | 3 - ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java | 1 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java new file mode 100644 index 0000000..df1f95a --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java @@ -0,0 +1,51 @@ +package com.ruoyi.common.convert; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import lombok.extern.slf4j.Slf4j; + +import java.math.BigDecimal; + +/** + * 澶ф暟鍊艰浆鎹� + * Excel 鏁板�奸暱搴︿綅15浣� 澶т簬15浣嶇殑鏁板�艰浆鎹綅瀛楃涓� + * + * @author Lion Li + */ +@Slf4j +public class ExcelBigNumberConvert implements Converter<Long> { + + @Override + public Class<Long> supportJavaTypeKey() { + return Long.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Long convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + return Convert.toLong(cellData.getData()); + } + + @Override + public CellData<Object> convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + if (ObjectUtil.isNotNull(object)) { + String str = Convert.toStr(object); + if (str.length() > 15) { + return new CellData<>(str); + } + } + CellData<Object> cellData = new CellData<>(new BigDecimal(object)); + cellData.setType(CellDataTypeEnum.NUMBER); + return cellData; + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index e5d385f..4060b17 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -3,6 +3,7 @@ import cn.hutool.core.util.IdUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.ruoyi.common.convert.ExcelBigNumberConvert; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUtils; @@ -52,6 +53,8 @@ .autoCloseStream(false) // 鑷姩閫傞厤 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + // 澶ф暟鍊艰嚜鍔ㄨ浆鎹� 闃叉澶辩湡 + .registerConverter(new ExcelBigNumberConvert()) .sheet(sheetName).doWrite(list); } catch (IOException e) { throw new RuntimeException("瀵煎嚭Excel寮傚父"); diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java index db5db8c..563704e 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java @@ -72,6 +72,10 @@ @GetMapping("/export") public void export(@Validated TestDemoBo bo, HttpServletResponse response) { List<TestDemoVo> list = iTestDemoService.queryList(bo); + // 娴嬭瘯闆姳id瀵煎嚭 +// for (TestDemoVo vo : list) { +// vo.setId(1234567891234567893L); +// } ExcelUtil.exportExcel(list, "娴嬭瘯鍗曡〃", TestDemoVo.class, response); } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java index 13fdc24..21149d8 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java @@ -1,8 +1,6 @@ package com.ruoyi.demo.domain; import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @@ -29,7 +27,6 @@ * 涓婚敭 */ @TableId(value = "id") - @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java index 3c8e452..4919bbd 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java @@ -26,6 +26,7 @@ /** * 涓婚敭 */ + @ExcelProperty(value = "涓婚敭") @ApiModelProperty("涓婚敭") private Long id; -- Gitblit v1.9.3