Hutools实现excel导出

2020-12-06  本文已影响0人  风一样的存在

由于代码中使用了Apache poi的excel导出,但是自己想使用easyExcel发现jar冲突。easyExcel默认使用poi 3.17的包,Apache poi使用3.9的包。我把easyExcel的依赖升级到3.9提示class找不到。折腾了很久,决定采用Hutools去封装个导出工具类。

/**
     * 导出文件
     * @param request
     * @param response
     * @param fileName 文件名
     * @param sheetName
     * @param headers  表头
     * @param data     数据
     * @param <T>
     */
    public static <T> void exportExcelByHuTools(HttpServletRequest request,
                                                HttpServletResponse response,
                                                String fileName,
                                                String sheetName,
                                                Map<String,String> headers,
                                                List<T> data) {
        long startTime = System.currentTimeMillis();
        //通过工具类创建writer
        try {
            ExcelWriter writer = ExcelUtil.getBigWriter();
            //设置sheet的名称
            writer.renameSheet(sheetName);
            //设置head的名称, 此时的顺寻就是导出的顺序, key就是RecordInfoDetailsDTO的属性名称, value就是别名
            headers.entrySet().forEach(entry->{
                //这个添加顺序和导出顺序相同
                writer.addHeaderAlias(entry.getKey(),entry.getValue());
            });
            writer.write(data, true);
            writer.setOnlyAlias(true);
            response.reset();
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
            //中文名称需要特殊处理
            writer.flush(response.getOutputStream());
            writer.close();
            long endTime = System.currentTimeMillis();
            System.out.println("hutool 写入记录耗时 " + (endTime - startTime) / 1000 + "秒");
        } catch (Exception e) {
            //如果导出异常,则生成一个空的文件
            log.info("######导出  excel异常  :{}", e.getMessage());
        }

    }
上一篇下一篇

猜你喜欢

热点阅读