【Excel导入导出】Java实用的Excel模版下载,Excel导入功能

Java实用的Excel下载,Excel导出功能

各位好,今天分享项目中实际使用的Excel导出与下载功能
在开始之前,需要引入maven依赖

   <!-- easypoi 依赖-->
    <dependency>
        <groupId>cn.afterturn</groupId>
        <artifactId>easypoi-spring-boot-starter</artifactId>
    </dependency>

笔者采用的是把需要导入数据的Excel模版放置在本地目录下
如图
在这里插入图片描述

大家可以看到,模版文件在resources的templateFile文件夹下,当然,如果把文件放在Minio或其他服务器上均也是可以的。
话不多说,直接贴代码,第一个方法是下载模版文件

    @ApiOperation(value = "下载任务导入Excel模版")
    @PostMapping("/downloadTaskExcel")
    public ApiResult<Boolean> downloadTaskExcel(HttpServletResponse response)  {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("任务导入Excel模版", "UTF-8");
            outputStream = response.getOutputStream();
            // 获取springboot resource 路径下的文件
            inputStream = this.getClass().getResourceAsStream("/templateFile/任务导入Excel模版.xlsx");
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
            IOUtils.copy(inputStream, outputStream);
        } catch (Exception e) {
            throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, e.toString());
        } finally {
            closeInput(inputStream);
            flushOutput(outputStream);

        }
        return ApiResult.success(true);
    }

采用POSTMAN调用该接口可以save成一个File,可以看到该模版文件长这个样子:
在这里插入图片描述
然后我们看第二个接口为解析Excel接口

@ApiOperation(value = "Excel导入任务数据")
    @PostMapping("/excelDataInto")
    public ApiResult<ExcelDataInVO> excelDataInto(  @RequestParam   String batchId,  @RequestParam  MultipartFile file) throws Exception {
        //创建Easy poi 导入对象
        ImportParams params = new ImportParams();
        //去掉标题行
        params.setTitleRows(0);
        //读取Excel文件中的数据
        List<ExcelData> list = ExcelImportUtil.importExcel(file.getInputStream(), ExcelData.class, params);
        ExcelDataInBO bo = taskService.excelDataIn(batchId, list);
        return ApiResult.success(bo.copyProperties2(ExcelDataInVO.class));
    }

这里需要注意的是ExcelData这个对象,和ExcelImportUyil.importExcel方法
在这里插入图片描述点开这个对象可以看到
在这里插入图片描述有个注解为Excel,里面的值为中文,对应的是Excel模版中的第一列的中文名,这样就可以做到解析的效。
第二个注意点是
在这里插入图片描述params.setTitleRows(0);
方法中的0对应的是从数字的下一行开始读取数据
为 0 则是从 Excel中的第 2 行开始读取
为 1 则是从Excel中的第 3 行开始读取

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值