美文网首页
Hutools实现excel导出

Hutools实现excel导出

作者: 风一样的存在 | 来源:发表于2020-12-06 19:49 被阅读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());
            }
    
        }
    

    相关文章

      网友评论

          本文标题:Hutools实现excel导出

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