Hutools實現(xiàn)excel導(dǎo)出

由于代碼中使用了Apache poi的excel導(dǎo)出,但是自己想使用easyExcel發(fā)現(xiàn)jar沖突。easyExcel默認(rèn)使用poi 3.17的包,Apache poi使用3.9的包。我把easyExcel的依賴升級到3.9提示class找不到。折騰了很久,決定采用Hutools去封裝個導(dǎo)出工具類。

/**
     * 導(dǎo)出文件
     * @param request
     * @param response
     * @param fileName 文件名
     * @param sheetName
     * @param headers  表頭
     * @param data     數(shù)據(jù)
     * @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();
        //通過工具類創(chuàng)建writer
        try {
            ExcelWriter writer = ExcelUtil.getBigWriter();
            //設(shè)置sheet的名稱
            writer.renameSheet(sheetName);
            //設(shè)置head的名稱, 此時的順尋就是導(dǎo)出的順序, key就是RecordInfoDetailsDTO的屬性名稱, value就是別名
            headers.entrySet().forEach(entry->{
                //這個添加順序和導(dǎo)出順序相同
                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) {
            //如果導(dǎo)出異常,則生成一個空的文件
            log.info("######導(dǎo)出  excel異常  :{}", e.getMessage());
        }

    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容