前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot整合easyexcel

SpringBoot整合easyexcel

作者头像
技术从心
发布2020-08-04 15:40:54
1.2K1
发布2020-08-04 15:40:54
举报
文章被收录于专栏:技术从心

什么是easyexcel

什么是easyexcel,easyexcel是阿里开发的一款简易的excel导出的工具,在一般的后台管理中都少不了excel的导出。

以前一般用的都是poi做导出的功能,但是这种原生的excel导出excel的功能是在太麻烦了,如果有架构师帮你封装好给你用那还好点。

但是这种一般都是自己去整合,而且poi导出excel的功能会有很多bug,就比如最常见的oom异常,导出数据量太多,或者批量导入导出都会有一点问题。

写一个简单的导出就得封装一大片代码可能还有问题。

看看以前写的poi导入

代码语言:javascript
复制
public static List<Object[]> importExcel(String fileName) {
        log.info("导入解析开始,fileName:{}",fileName);
        try {
            List<Object[]> list = new ArrayList<>();
            InputStream inputStream = new FileInputStream(fileName);
            Workbook workbook = WorkbookFactory.create(inputStream);
            Sheet sheet = workbook.getSheetAt(0);
            //获取sheet的行数
            int rows = sheet.getPhysicalNumberOfRows();
            for (int i = 0; i < rows; i++) {
                //过滤表头行
                if (i == 0) {
                    continue;
                }
                //获取当前行的数据
                Row row = sheet.getRow(i);
                Object[] objects = new Object[row.getPhysicalNumberOfCells()];
                int index = 0;
                for (Cell cell : row) {
                    if (cell.getCellType() == CELL_TYPE_NUMERIC) {
                        objects[index] = (int) cell.getNumericCellValue();
                    }
                    if (cell.getCellType() == CELL_TYPE_STRING) {
                        objects[index] = cell.getStringCellValue();
                    }
                    if (cell.getCellType() == CELL_TYPE_BOOLEAN) {
                        objects[index] = cell.getBooleanCellValue();
                    }
                    if (cell.getCellType() == CELL_TYPE_ERROR) {
                        objects[index] = cell.getErrorCellValue();
                    }
                    index++;
                }
                list.add(objects);
            }
            log.info("导入文件解析成功!");
            return list;
        }catch (Exception e){
            log.info("导入文件解析失败!");
            e.printStackTrace();
        }
        return null;
    }

封装了一大片,结果还有可能出毛病。

阿里的easyexcel

加入pom文件

代码语言:javascript
复制
<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
        </dependency>

加上注释

编写代码

代码语言:javascript
复制
@GetMapping("/excel")
    @ApiOperation(value = "导出", notes = "导出")
    public void excel(HttpServletResponse response) throws IOException {
        String fileName = "黑名单导入模板_" + sdf.format(new Date()) + ".xls";
        response.setHeader("Content-disposition",
                "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));// 设置文件头编码格式
        response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");// 设置类型
//        response.setHeader("Cache-Control", "no-cache");// 设置头
//        response.setDateHeader("Expires", 0);// 设置日期头
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        List<Label> labelList = lableService.findAll();
        EasyExcel.write(response.getOutputStream(), Label.class).sheet("模板").doWrite(labelList);
    }

启动项目

完美导出

复杂的excel头

都可以简单的完成,方便多了,而且阿里的封装性避免了一些批量导入导出和oom等一些的问题

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术从心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是easyexcel
  • 看看以前写的poi导入
  • 阿里的easyexcel
  • 启动项目
  • 复杂的excel头
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档