编写导出工具类中的通用导出方法时,用easyPoi导出的excel打开会出现一条绿线,一开始以为是默认style类导致的问题,后来发现是默认会窗口冻结第一行,在excel的视图里可以取消窗口冻结,但是我们要在导出的时候就去除掉
获取sheet对象,编辑createFreezePane方法,去除窗口冻结也可以加上
java
   /**
     * 这个是通用的easyPoi有对象导出方式
     * @param response HttpServletResponse
     * @param type 导出excel后缀类型
     * @param fileName 导出文件名
     * @param clazz 列表中的类型对象
     * @param list 导出列表
     * @throws Exception
     */
    public static <T> void easyPoiObjectToExcel(HttpServletResponse response, String type, Class<T> clazz, String fileName, List<T> list) throws IOException {
        if (type.equals("csv")) {
            response.setContentType("text/csv");
        } else if (type.equals("dbf")) {
            response.setContentType("application/x-dbf");
        } else if (type.equals("xls")) {
            response.setContentType("application/vnd.ms-excel");
        } else {
            //默认xlsx
            type = "xlsx";
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        }
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + "." + type, "utf-8"));
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        try {
            ExportParams exportParams = new ExportParams(fileName, "Sheel1");
            exportParams.setStyle(ExcelStylesUtil.class);
            // 生成workbook 并导出
            Workbook workbook = ExcelExportUtil.exportExcel(exportParams, clazz, list);
            //获取sheet对象
            Sheet sheet = workbook.getSheetAt(0);
            //去除窗口冻结
            sheet.createFreezePane(0,0);
            workbook.write(response.getOutputStream());
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
            outputErrorJson(response, e.getMessage());
        }
    }
本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!