springboot+easyExcel导出数据

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>1.1.2-beta5</version>
</dependency>   
@Component
public class ExcelFactory<T extends BaseRowModel> {

    public ExportExcelUtil<T> createExportExcel() {
        return new ExportExcelUtil<>();
    }
}
@Data
public class GuangGaoJiExcel extends BaseRowModel {

    @ExcelProperty(value = {"公司名"},index = 0)
    private String companyName;

    @ExcelProperty(value = {"接入码"},index = 1)
    private String machineNum;

    @ExcelProperty(value = {"接入密码"},index = 2)
    private String machineSeq;

    @ExcelProperty(value = {"发布信息账号"},index = 3)
    private String publishAccount;

    @ExcelProperty(value = {"公司logo"},index = 4)
    private String logo;

    @ExcelProperty(value = {"公司地址"},index = 5)
    private String address;

    @ExcelProperty(value = {"广告宣传语"},index = 6)
    private String slogan;

    @ExcelProperty(value = {"摆放位置"},index = 7)
    private String location;

    @ExcelProperty(value = {"创建时间"},index = 8)
    private String createTime;

    @ExcelProperty(value = {"创建人"},index = 9)
    private String createBy;
}
@Resource
private ExcelFactory excelFactory;

public void exportData(HttpServletResponse response) {
        List<Long> idList = dao.getAllId();
        if (idList.size() > 0) {
            List<GuangGaoJiExcel> data = new ArrayList<>();
            for (Long id : idList) {
                logger.info("id:{}",id);
                AdPartner adPartner = dao.findById(id).orElse(null);
                User user = userDao.findById(String.valueOf(adPartner.getUserId())).orElse(null);
                AdPartnerDto dto = getDetail(id);
                GuangGaoJiExcel guangGaoJiExcel = new GuangGaoJiExcel();
                BeanUtils.copyProperties(dto,guangGaoJiExcel);
                guangGaoJiExcel.setCreateTime(String.valueOf(adPartner.getCreatedTime()));
                if (null != user) {
                    guangGaoJiExcel.setCreateBy(user.getNickname());
                }
                data.add(guangGaoJiExcel);
            }
            String name = "广告机数据表.xlsx";
            try {
                excelFactory.createExportExcel().exportExcel(response,data, GuangGaoJiExcel.class,name);
            } catch (Exception e) {
                logger.error("下载失败:{}",e.getMessage());
            }
        }
    }
public class ExportExcelUtil<T extends BaseRowModel> {

    public ExportExcelUtil() {}

    /**
     * 导出excel表格
     */
    public void exportExcel(HttpServletResponse response, List<T> data, Class<T> clazz, String fileName) throws IOException {
        response.reset();
        response.setContentType("application/vnd.ms-excel");
        // 注意,这里filename*=utf-8''是为了避免导出的文件名乱码!!!
        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
        OutputStream out = null;
        try {
            out = response.getOutputStream();
            //ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);
            StyleExcelHandler handler = new StyleExcelHandler();
            //ExcelWriter writer = new ExcelWriter(null,out, ExcelTypeEnum.XLSX,true);
            ExcelWriter writer = new ExcelWriter(null,out, ExcelTypeEnum.XLSX,true,handler);
            Sheet sheet1 = new Sheet(1, 0, clazz);
            sheet1.setSheetName("sheet1");
            writer.write(data, sheet1);
            writer.finish();
        } finally {
            if (out != null) {
                out.close();
            }
        }
    }

    public void createExcel(ByteArrayOutputStream out,List<T> data, Class<T> clazz) throws IOException{

        //StyleExcelHandler handler = new StyleExcelHandler();
        ExcelWriter writer = new ExcelWriter(null,out, ExcelTypeEnum.XLSX,true);
        Sheet sheet1 = new Sheet(1, 0, clazz);
        sheet1.setSheetName("在线咨询数据分析表");
        writer.write(data, sheet1);
        writer.finish();

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值