主子导出接口

Controller

    /**
     *------导出
     *
     * @param response
     * @param ids
     * @return
     */
    @ApiOperation(value = "")
    @RequestMapping("/talentExport")
    private Object talentExport(HttpServletResponse response, String[] ids) {
        try {
            return this.buildSuccess(hrrgComEvaService.talentExport(response, ids));
        } catch (Exception exp) {
            return this.buildFaild(exp.getMessage());
        }

service

public Object talentExport(HttpServletResponse response, String[] ids) {
        List<String> idList = Arrays.asList(ids);
        if (CollectionUtil.isEmpty(idList)) {
            throw new RuntimeException("请选择需要导出的数据");
        }
        //查询主表数据
        List<HrrgComEvaDto> hrrgComEvaList = hrrgComEvaMapper.talentExport(idList);
        //查询子表数据
        List<HrrgEvaDimInfoDto> hrrgEvaDimInfoList = hrrgEvaDimInfoMapper.talentExport(idList);
        //响应格式设置
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        try {
            String fileName = URLEncoder.encode("excel名称导出", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");
            //新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
            //获取sheet0对象
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "页签名称").head(HrrgComEvaDto.class).build();

            WriteSheet mainSheet1 = EasyExcel.writerSheet(1, "页签名称").head(HrrgEvaDimInfoDto.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            excelWriter.write(hrrgComEvaList, mainSheet);
            excelWriter.write(hrrgEvaDimInfoList, mainSheet1);
            //关闭流
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出数据失败");
        }
        return "导出成功";
    }

若依框架提供了方便的主子表数据导入导出功能。具体步骤如下: 1.在实体类中使用@Excel注解标注需要导入导出的字段,同时使用@ExcelCollection注解标注子表对应的集合字段。 2.在Controller中使用EasyExcel工具类进行导入导出操作。具体代码如下: ```java // 导出主子表数据 @RequestMapping("/export") public void export(HttpServletResponse response) throws IOException { // 查询数据 List<MainTable> list = mainTableService.getList(); // 导出操作 EasyExcelUtil.exportExcel(response, list, MainTable.class, "主子表数据"); } // 导入主子表数据 @RequestMapping("/import") public void importData(MultipartFile file) throws IOException { // 导入操作 List<MainTable> list = EasyExcelUtil.importExcel(file, MainTable.class); // 保存数据 mainTableService.saveList(list); } ``` 3.在EasyExcelUtil工具类中封装了导入导出的具体实现。具体代码如下: ```java /** * 导出Excel * * @param response HttpServletResponse * @param list 数据列表 * @param clazz 实体类 * @param fileName 文件名 * @throws IOException IO异常 */ public static void exportExcel(HttpServletResponse response, List<?> list, Class<?> clazz, String fileName) throws IOException { // 设置响应头 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx"); // 导出操作 EasyExcel.write(response.getOutputStream(), clazz).sheet("Sheet1").doWrite(list); } /** * 导入Excel * * @param file 文件 * @param clazz 实体类 * @return 数据列表 * @throws IOException IO异常 */ public static List<?> importExcel(MultipartFile file, Class<?> clazz) throws IOException { // 导入操作 return EasyExcel.read(file.getInputStream(), clazz, new ExcelListener()).sheet().doReadSync(); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值