EasyExcel多sheet的導入和導出

EasyExcel多sheet的導入和導出

EasyExcel對於導入導出的操作十分簡潔,方便快捷。其中對於多單文件多sheet的操作比較不同,在此做一下記錄

從多sheet中導入數據

public Result importDetail(@RequestParam(value = "file") MultipartFile serviceFile) throws IOException {
    ExcelReader excelReader = null;
    InputStream in = null;
    try {
        in = serviceFile.getInputStream();
        ExcelListener excelListener = new ExcelListener();
        excelReader = EasyExcel.read(in, PurchaseDetailVO.class, excelListener).build();
        //獲取採購單主信息
        ReadSheet readSheet = EasyExcel.readSheet(0).build();
        excelReader.read(readSheet);
        List<PurchaseFeignParam> purchaseFeignParams = ConverterUtils.convertList(excelListener.getData(), PurchaseFeignParam.class);
        if (CollectionUtils.isEmpty(purchaseFeignParams)) {
            return Result.fail(30101, "導入數據爲空", null);
        }
        //插入採購單數據
        purchaseFeignClient.createPurchase(purchaseFeignParams.get(0));
        //清空list數據
        excelListener.getData().clear();
        //獲取明細表信息
        ReadSheet readDetailSheet = EasyExcel.readSheet(1).build();
        excelReader.read(readDetailSheet);
        List<PurchaseDetailFeignParam> purchaseDetailFeignParam = ConverterUtils.convertList(excelListener.getData(), PurchaseDetailFeignParam.class);
        //插入採購單明細數據
        return purchaseDetailFeignClient.createPurchaseDetailBatch(purchaseDetailFeignParam);
    } catch (IOException ex) {
        logger.error("import excel to db fail", ex);
    } finally {
        in.close();
        // 這裏一定別忘記關閉,讀的時候會創建臨時文件,到時磁盤會崩
        if (excelReader != null) {
            excelReader.finish();
        }
    }
    return Result.success();
}

導出爲多sheet

 public Result<Boolean> exportBookRecord(HttpServletResponse response) {
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        // 這裏URLEncoder.encode可以防止中文亂碼
        try {
            String fileName = URLEncoder.encode("template", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            //導出採購單模板 放在sheet0
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "採購單").head(PurchaseVO.class).build();
            excelWriter.write(Lists.newArrayList(),mainSheet);
            //導出採購單明細模板 放在sheet1
            WriteSheet detailSheet = EasyExcel.writerSheet(1, "採購單明細").head(PurchaseDetailVO.class).build();
            excelWriter.write(Lists.newArrayList(),detailSheet);
            //關閉流
            excelWriter.finish();
        } catch (IOException e) {
            logger.error("導出異常{}", e.getMessage());
        }
        return Result.success();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章