easyexcel 导出excel 文件

1:controller类
 @GetMapping("/export")
    public void export(Integer couponId, HttpServletResponse response) throws Exception {

        ExcelWriter writer = null;
        OutputStream outputStream = response.getOutputStream();
        try {
            //添加响应头信息
            response.setHeader("Content-disposition", "attachment; filename=" + ""+ System.currentTimeMillis() +".xls");
            response.setContentType("application/msexcel;charset=UTF-8");//设置类型
            response.setHeader("Pragma", "No-cache");//设置头
            response.setHeader("Cache-Control", "no-cache");//设置头
            response.setDateHeader("Expires", 0);//设置日期头

            //实例化 ExcelWriter
            writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLS, true);

            //实例化表单
            Sheet sheet = new Sheet(1, 0, LitemallCouponUser.class);
            sheet.setSheetName("sheet1");

            //获取数据(这个根据你实际情况获取到的数据)
            List<LitemallCouponUser> couponUserList = couponUserService.queryAll2(couponId);

            //输出
            writer.write(couponUserList, sheet);
            writer.finish();
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                response.getOutputStream().close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
2:实体类
@Getter
@Setter
public class LitemallCouponUser extends BaseRowModel {

    @ExcelIgnore
    private Integer id;

    @ExcelProperty(value = "用户id", index = 0)
    @ColumnWidth(15)
    private Integer userId;

    @ExcelProperty(value = "优惠券id", index = 1)
    @ColumnWidth(15)
    private Integer couponId;

    @ExcelProperty(value = "使用状态", index = 2, converter = StatusConverter.class)
    @ColumnWidth(15)
    private Short status;

    @ExcelProperty(value = "使用时间", index = 3, converter = LocalDateTimeConverter.class)
    @ColumnWidth(20)
    private LocalDateTime usedTime;

    @ExcelIgnore
    private LocalDateTime startTime;

    @ExcelIgnore
    private LocalDateTime endTime;

    @ExcelProperty(value = "订单id", index = 4)
    @ColumnWidth(15)
    private Integer orderId;

    @ExcelIgnore
    private Integer ordersId;

    @ExcelProperty(value = "领取时间", index = 5, converter = LocalDateTimeConverter.class)
    @ColumnWidth(20)
    private LocalDateTime addTime;

    @ExcelIgnore
    private LocalDateTime updateTime;

    @ExcelIgnore
    private Boolean deleted;

3:自定义转换器
3.1 easyexcel自定义转换器(LocalDateTime)
package org.linlinjava.litemall.db.util.converter;

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 java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * easyexcel自定义转换器(LocalDateTime)
 */
public class LocalDateTimeConverter implements Converter<LocalDateTime> {

    @Override
    public Class<LocalDateTime> supportJavaTypeKey() {
        return LocalDateTime.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
                                           GlobalConfiguration globalConfiguration) {
        return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }

    @Override
    public CellData<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
                                               GlobalConfiguration globalConfiguration) {
        return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    }

}
3.2:easyexcel自定义转换器 (状态)
package org.linlinjava.litemall.db.util.converter;

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;


public class StatusConverter implements Converter<Short> {
    @Override
    public Class supportJavaTypeKey() {
        return Short.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public Short convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        if(cellData.getStringValue().equals("未使用")) {
            return 0;
        }else if (cellData.getStringValue().equals("已使用")) {
            return 1;
        }else if (cellData.getStringValue().equals("已过期")) {
            return 2;
        }else {
            return 3;
        }
//        return "男".equals(cellData.getStringValue()) ? 1 : 0;
    }

    @Override
    public CellData convertToExcelData(Short value, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        System.out.println(value);
        if(value == 0) {
            return new CellData("未使用");
        }else if(value == 1) {
            return new CellData("已使用");
        }else if(value == 2) {
            return new CellData("已过期");
        }else {
            return new CellData("已下架");
        }
//        return new CellData(value.equals(1) ? "男" : "女");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值