EsayPoi导入导出表格

/**
     * 导出 excel表格
     *
     * @param spacecraftId
     */
    @Override
    public CheckResult exportParamExcel(Long spacecraftId, HttpServletResponse response) {
        Map<String, Object> parameterMap = new HashMap<>(5);
        parameterMap.put("spacecraftId", spacecraftId);
        parameterMap.put("groupIds", -1);
        parameterMap.put("paramType", -1);
        parameterMap.put("values", -1);
        List<SpacecraftTelemetryParam> spacecraftTelemetryParamList = selectByGroupId(parameterMap);
        if (spacecraftTelemetryParamList.isEmpty()) {
            log.info(MsgPrefixKit.genMgt("没查到该飞行器下的参数信息"));
            return CheckResult.fail("没有对应的文件,导出失败");
        }
        List<SpacecraftTelemetryParamExcel> list = new ArrayList<>(spacecraftTelemetryParamList.size());
        //导出  表格数据拼写
        for (int i = 0; i < spacecraftTelemetryParamList.size(); i++) {
            SpacecraftTelemetryParamExcel spacecraftTelemetryParamExcel = new SpacecraftTelemetryParamExcel();
            BeanUtil.copyProperties(spacecraftTelemetryParamList.get(i), spacecraftTelemetryParamExcel);
            SpacecraftTelemetryFrame spacecraftTelemetryFrame = telemetryFrameService.selectBySpacecraftId(spacecraftTelemetryParamList.get(i).getSpacecraftId());
            spacecraftTelemetryParamExcel.setTelemetryDataName(spacecraftTelemetryFrame.getTelemetryFormat());
            list.add(spacecraftTelemetryParamExcel);
        }
        ExportParams exportParams = new ExportParams();
        exportParams.setSheetName("遥测参数");
        // 生成workbook 并导出
        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, SpacecraftTelemetryParamExcel.class, list);
        // 组装excel文件name
        Spacecraft spacecraft = spacecraftService.selectById(spacecraftId);
        String dateName = DateUtil.format(new Date(), "yyyyMMddHHmmss");
        String fileName = spacecraft.getSpacecraftName() + "遥测参数" + dateName;
        
        // 下载excel
        outPut(response, fileName, workbook);

        //TODO: 目录桌面  后期修改
//        File savefile = new File("C:\\Users\\Administrator\\Desktop\\Ceshi.xlsx");
//        if (!savefile.exists()) {
//            boolean result = savefile.mkdirs();
//            System.out.println("目录不存在,创建" + result);
//        }
//        FileOutputStream fos = null;
//        try {
//            fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\" + spacecraftId + ".xlsx");
//            workbook.write(fos);
//            fos.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return CheckResult.fail("导出异常失败");
//        }
        return CheckResult.success("导出成功");
    }



/**
     * 导入 excel表格
     *
     * @param spacecraftId
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public CheckResult input(MultipartFile file, Long spacecraftId) {
        ImportParams importParams = new ImportParams();
        // 因为Excel是从第2行开始才有正式数据,所以我们这里从第1行开始读取数据
        importParams.setHeadRows(1);
        // 需要校验
        importParams.setNeedVerify(true);
        // 获取模板
        ExcelImportResult<SpacecraftTelemetryParamExcel> data = new ExcelImportResult<>();
        try {
            data = ExcelImportUtil.importExcelMore(file.getInputStream(), SpacecraftTelemetryParamExcel.class, importParams);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        // 获取模板数据(通过校验的数据)
        List<SpacecraftTelemetryParamExcel> successList = data.getList();
        if (successList.size() == 0) {
            // 如果数据量为0直接返回错误信息,不继续执行
            log.info(MsgPrefixKit.genMgt("错误信息,不继续执行"));
            return CheckResult.fail("错误信息,不继续执行");
        }
        // 校验失败的数据集合
        List<SpacecraftTelemetryParamExcel> failList = data.getFailList();
        if (failList.size() > 0) {
            // 如果此数据量大于0,直接返回错误信息
            log.info(MsgPrefixKit.genMgt("有" + data.getFailList().size() + "条数据不合格,无法导入"));
        }
        // 循环数据
        List<SpacecraftTelemetryParamExcel> spacecraftTelemetryParamExcels = new ArrayList<>(successList);
        List<SpacecraftTelemetryParam> spacecraftTelemetryParamList = new ArrayList<>();
        for (SpacecraftTelemetryParamExcel spacecraftTelemetryParamExcel : spacecraftTelemetryParamExcels) {
            SpacecraftTelemetryParam spacecraftTelemetryParam = new SpacecraftTelemetryParam();
            BeanUtil.copyProperties(spacecraftTelemetryParamExcel, spacecraftTelemetryParam);
            SpacecraftTelemetryFrame spacecraftTelemetryFrame = telemetryFrameService.selectBySpacecraftId(spacecraftId);
            spacecraftTelemetryParam.setTelemetryDataId(spacecraftTelemetryFrame.getTelemetryDataId());
            spacecraftTelemetryParam.setSpacecraftId(spacecraftId);
            spacecraftTelemetryParamList.add(spacecraftTelemetryParam);
        }
        Spacecraft spacecraft = spacecraftService.selectById(spacecraftId);
        if (spacecraft == null) {
            return CheckResult.fail("传入的飞行器id不正确");
        }
        //TODO: 2 没有修改和删除  查询参数识别码看是否有此数据 ,有修改 没有添加
        for (SpacecraftTelemetryParam spacecraftTelemetryParam : spacecraftTelemetryParamList) {
            SpacecraftTelemetryParam telemetryParam = selectIdentificationWord(spacecraftTelemetryParam.getParamIdentificationWord(), spacecraftId);
            if (telemetryParam == null) {
                insert(spacecraftTelemetryParam);
//            } else {
//                spacecraftTelemetryParam.setSpacecraftParamId(telemetryParam.getSpacecraftParamId());
//                updateByPrimaryKey(spacecraftTelemetryParam);
            }
        }

        //TODO: 1 没有修改和删除  查询主键看是否有此数据 , 没有添加
//        for (SpacecraftTelemetryParam spacecraftTelemetryParam : spacecraftTelemetryParamList) {
//
//            SpacecraftTelemetryParam telemetryParam = selectById(spacecraftTelemetryParam.getSpacecraftParamId());
//            if (telemetryParam == null) {
//                insert(spacecraftTelemetryParam);
//            }
//        }
        return CheckResult.success(spacecraftTelemetryParamList);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用EasyPoi导出表格文档,可以按照以下步骤进行操作: 1. 首先,可以在Maven中添加EasyPoi的依赖,例如: ``` <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.1.1</version> </dependency> ``` 2. 创建实体类,用于存储表格中的数据。 3. 在Controller中编写导出的方法,例如: ``` @RequestMapping("/export") public void export(HttpServletResponse response) { List<User> userList = userService.getAllUsers(); // 设置导出的文件名 String fileName = "用户信息表格.xls"; try { // 设置响应头信息 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1")); // 调用EasyPoi的API,完成导出 ExcelExportUtil.exportExcel(new ExportParams("用户信息表", "用户信息"), User.class, userList, response.getOutputStream(), ExcelType.XLS); } catch (IOException e) { e.printStackTrace(); } } ``` 在上面的代码中,ExcelExportUtil.exportExcel方法用于导出Excel文件,其中ExportParams用于设置导出参数,User.class表示要导出的实体类,userList是要导出的数据列表,response.getOutputStream()用于获取输出流,ExcelType.XLS表示导出的文件类型为XLS格式。 4. 最后,访问导出的方法即可完成表格导出。 需要注意的是,以上仅是EasyPoi导出表格的基本操作,具体的使用还需要根据实际情况进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值