easyexcel工具使用

easyexcel是阿里开源的关于excel处理的工具包,Github地址

在Github的md上已经讲解了一些基础的用法,这里主要是对基础使用进行简单的二次封装方便使用
/**
 * http封装
 */
public static void httpExportByOneSheet(HttpServletResponse response, List<? extends BaseRowModel> list,Class<? extends BaseRowModel> clazz,  String fileName) throws Exception {
        response.reset();
        response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("gbk"), "iso8859-1"));
        response.setContentType("application/octet-stream");

        OutputStream out = response.getOutputStream();
        ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);

        Sheet sheet1 = new Sheet(1, getHeadLineNum(clazz), clazz, fileName, null);
        writer.write(list, sheet1);
        writer.finish();
        out.flush();
    }
/**
 * 本地导出封装
 */
public static String localExport(List<? extends BaseRowModel> list, Class<? extends BaseRowModel> clazz, String exportPath) throws Exception {
        FileUtil.checkAndCreateDirs(exportPath);
        if(!exportPath.endsWith(File.separator)){
            exportPath += File.separator;
        }
        String fileName = getFileName();
        String filePath = FileUtil.checkAndCreateFile(exportPath + fileName + ".xlsx");
        OutputStream out = new FileOutputStream(filePath);
        ExcelWriter writer = EasyExcelFactory.getWriter(out);


        Sheet sheet = new Sheet(1, getHeadLineNum(clazz), clazz, fileName, null);
        writer.write(list, sheet);
        writer.finish();
        out.close();
        return exportPath + fileName + ".xlsx";
    }
    private static int getHeadLineNum(Class<? extends BaseRowModel> clazz) {
        int headLineNum = 0;
        for (Field declaredField : clazz.getDeclaredFields()) {
            ExcelProperty annotation = declaredField.getAnnotation(ExcelProperty.class);
            if (annotation != null && annotation.value().length > headLineNum) {
                headLineNum = annotation.value().length;
            }
        }
        return headLineNum;
    }

    private static String getFileName() {
        StringBuilder sb = new StringBuilder(System.currentTimeMillis() + "_");
        Random random = new Random();
        for (int i=0; i<4; i++) {
            sb.append(random.nextInt(9));
        }
        return sb.toString();
    }

可以在此上增加其他处理,如excel样式或者多sheet等,此demo仅起抛砖引玉的作用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值