EasyExcel 简单的使用方法

第一步先在pom.xml导入 EasyExcel

 <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.8</version>
    </dependency>

在实体类要导入 的字段加上 @ExcelProperty(“车牌号”) 不导入的字段加上 @ExcelIgnore

  @ExcelProperty("报备的截止时间")
    @ApiModelProperty(value = "报备的截止时间")
    private Date endTime;
    @ExcelProperty("状态")
    private int carState;
    @ExcelIgnore
    private int operationPersonId;

然后使用如下的方法数据导出 注意请求头必须要加

 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
 如果不加就回导出一个压缩包 

其实我不推荐使用
如果部分类是要继承其他的实体类 在其他实体类上有需要到出那么建议 includeColumnFiledNames()这个 这个加上要到出的字段

    /**
     * 导出表格
     */
    @RequestMapping("/exportTable")
    public void exportTable(HttpServletResponse response, HttpServletRequest request) throws IOException {
        //请求头
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  
        //所有数据
        List<Car> list = recordCarAllService.exporztTable();
        //获取输出流
        OutputStream outputStream = response.getOutputStream();

        try {
            //要导出的字段
            Set<String> setTable = new HashSet<String>();
            setTable.add("vehicleType");
            setTable.add("carNumber");
            setTable.add("tractorNumber");
            setTable.add("carType");
            setTable.add("carLoad");
            //导出 
            EasyExcel.write(outputStream, Car.class).includeColumnFiledNames(setTable).sheet().doWrite(list);
            outputStream.flush();
        } catch (IOException e) {
        } finally {
            outputStream.close();
        }
    }

表格的导入

/**
     * 表格导入
     */
    @PostMapping("/tableImport")
    @Transactional
    public R tableImport(@RequestParam("multipartFile") MultipartFile multipartFile) throws IOException {
        //读取上传文件数据转换成输入流
        InputStream inputStream = multipartFile.getInputStream();
        //吧上传文件的输入流  储存的list
        List<Object> list = EasyExcel.read(inputStream).doReadAllSync();
        //里面的数据是{0:1,1:'AmdYes',2:'intel Yes'}
        for (Object a : list) {
            Map<Integer, String> map = (HashMap<Integer, String>) a;
            if (map.size() > 4) {
                return R.fail("表格信息有误");
            }
            //时间的格式
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            //获取map 里的数据
            RecordCarAll recordCarAll = new RecordCarAll();
            recordCarAll.setCarNumber(map.get(0));
            recordCarAll.setCarrierName(map.get(1));
            String startTime = map.get(2);
            String endTime = map.get(3);
            Date startTimeDate = null;
            Date endTimeDate = null;
            //对时间进行解析如果不对这抛出异常
            try {
                startTimeDate = df.parse(startTime);
                endTimeDate = df.parse(endTime);
            } catch (ParseException e) {
                return R.fail("时间格式有错误");
            }
            recordCarAll.setStartTime(startTimeDate);
            recordCarAll.setEndTime(endTimeDate);
            //对上传数据进行保存
            boolean pd = recordCarAllService.save(recordCarAll);
            if (pd) {

            } else {
                throw new RuntimeException("");
            }
        }

        return R.success("导入成功");
    }

建议一定要写一个模板的到出 不让用户万一有很多种格式了

 /*模板下载*/
    @GetMapping("/templateDownload")
    public R templateDownload(HttpServletResponse response, HttpServletRequest request) throws IOException {
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        OutputStream outputStream = response.getOutputStream();
        Set<String> setTable = new HashSet<String>();
        setTable.add("carNumber");
        setTable.add("carrierName");
        setTable.add("startTime");
        setTable.add("endTime");
        List<RecordCarAll> list = new ArrayList<>();
        EasyExcel.write(outputStream, RecordCarAll.class).includeColumnFiledNames(setTable).sheet().doWrite(list);
        return R.success("成功");
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值