美文网首页
easyexcel导出excel金额分转元

easyexcel导出excel金额分转元

作者: 爱的旋转体 | 来源:发表于2021-11-16 16:27 被阅读0次

    1、自定义Converter

    package com.example.demo;
    
    import com.alibaba.excel.converters.Converter;
    import com.alibaba.excel.enums.CellDataTypeEnum;
    import com.alibaba.excel.metadata.GlobalConfiguration;
    import com.alibaba.excel.metadata.data.ReadCellData;
    import com.alibaba.excel.metadata.data.WriteCellData;
    import com.alibaba.excel.metadata.property.ExcelContentProperty;
    import com.alibaba.excel.util.NumberUtils;
    
    import java.math.BigDecimal;
    import java.math.RoundingMode;
    
    
    /**
     * @author xuzhipeng
     * @date 2021/11/16
     */
    public class CustomFenToYuanConverter implements Converter<Long> {
    
        public CustomFenToYuanConverter() {
        }
    
        @Override
        public Class<Long> supportJavaTypeKey() {
            return Long.class;
        }
    
        @Override
        public CellDataTypeEnum supportExcelTypeKey() {
            return CellDataTypeEnum.NUMBER;
        }
    
        @Override
        public Long convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
            return cellData.getNumberValue().longValue();
        }
    
        @Override
        public WriteCellData<?> convertToExcelData(Long value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
            return NumberUtils.formatToCellData(new BigDecimal(String.valueOf(value)).divide(new BigDecimal(100),2, RoundingMode.HALF_UP), contentProperty);
        }
    }
    

    2、字段上加注解

    package com.example.demo.pojo;
    
    import com.alibaba.excel.annotation.ExcelProperty;
    import com.alibaba.excel.annotation.format.NumberFormat;
    import com.example.demo.CustomFenToYuanConverter;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.io.Serializable;
    
    /**
     * @author xuzhipeng
     * @date 2021/11/16
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public class Student implements Serializable {
    
        private static final long serialVersionUID = -2276319513977941707L;
    
        @ExcelProperty(value = "金额(元)", index = 0,converter = CustomFenToYuanConverter.class)
        @NumberFormat("#0.00")
        private Long amount;
    }
    
    

    3、测试

    package com.example.demo;
    
    import com.alibaba.excel.EasyExcel;
    import com.example.demo.pojo.Student;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.servlet.http.HttpServletResponse;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author xuzhipeng
     * @date 2021/9/29
     */
    @RestController
    public class Controller {
    
        @GetMapping("/hello")
        public void hello(HttpServletResponse response) throws Exception {
            List<Student> list = new ArrayList<>();
            list.add(Student.builder().amount(1234423L).build());
            list.add(Student.builder().amount(34455549L).build());
    
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("测试文件", "UTF-8") + ".xlsx");
            EasyExcel.write(response.getOutputStream(), Student.class).sheet("测试").doWrite(list);
        }
    
    }
    
    
    image.png

    相关文章

      网友评论

          本文标题:easyexcel导出excel金额分转元

          本文链接:https://www.haomeiwen.com/subject/ktbhtrtx.html