《excel导出》

前言:  

        项目架构:

                       前端框架:Angular6 + ng-zorro-antd

                       后端架构:SSM + Dubbo:springMVC + spring + myBatis-plus

         接下来请随小编一起来看看excel导出是如何实现的呢?

正文:

                                                                                 前端

   一。具体技术实现步骤

         1.html,按钮为触发事件

    <button nz-button nzType="primary" nzGhost (click)="downTaleData()">导出</button>

         2.component.ts,前后端交互

downTaleData() {
      const url = 'http://localhost:8085/local-web/foo/exportFooByGroupId/{gruopId}';
      window.open(url);
      URL.revokeObjectURL(url);
    }
  }

                                                                                 后端

    一。具体技术实现

          1.在pom文件中引入相关jar包

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>

        <dependency>
            <groupId>org.jplus</groupId>
            <artifactId>J-Excel</artifactId>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
        </dependency>

           2.核心业务逻辑代码

           2.1 serviceImpl

@Override
    public ItooResult exportByGroupId(HttpServletResponse response, String groupId) {
        Map<Serializable, Serializable> map = new HashMap<>(16);
        //日期转换字符串的格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");

        map.put(SHEET_NAME, "Foo信息");
        //要导出的字段
        map.put(COLUMNS, new String[]{"userName", "sex", "telNum", "startTime", "fooGroupName"});
        //导出表格的字段
        map.put(TITLE, "Foo信息");
        map.put(NAME, "Foo信息表");
        //要导出的数据
        List<FooTemplate> fooTemplates = new ArrayList<>();
        List<FooModel> fooModels = fooDao.queryFooByGroupId(groupId);
        for (FooModel fooModel: fooModels){
            FooTemplate fooTemplate = new FooTemplate();
            BeanUtils.copyProperties(fooModel, fooTemplate);
            fooTemplate.setFooGroupName(fooModel.getDeptName());
            fooTemplate.setStartTime(simpleDateFormat.format(fooModel.getStartTime()));
            fooTemplates.add(fooTemplate);
        }
        //为空不进行导出
        if (fooTemplates.size() == 0){
            return ItooResult.build(ItooResult.FAIL, "没有要导出的数据!");
        }
        map.put(DATA_LIST, (Serializable)fooTemplates);

        //导出
        try {
            ExcelUtil.exportExcel(map, response);
        }catch (Exception e){
            log.error("导出失败,未知的异常" + e);
            return ItooResult.build(ItooResult.FAIL, "导出信息失败!");
        }
        return ItooResult.build(ItooResult.SUCCESS, "导出信息成功");

    }

           2.2  sql

       SELECT
            f.id,
            f.user_code,
            f.user_name,
            f.sex,
            f.tel_num,
            f.start_time,
            f.end_time,
            fg.id AS fooGroupId,
            fg.dept_name
        FROM
            t_foo f
        LEFT JOIN t_foo_group fg ON f.foo_group_id = fg.id
        WHERE
            f.is_delete = 0
        AND fg.is_delete = 0
        AND f.foo_group_id = #{fooGroupId}
        ORDER BY
            f.create_time DESC

结语:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值