EasyPoi实现数据库数据导出到Excel中

写在前面:

本篇文章详细介绍一下在企业中常常用到的EasyPoi导出操作,也就是将数据库汇总持久化的数据从数据库中导入到Excel表格中,因为,Excel表格对于非开发人员来讲更加的容易接受。

任务展示:

下面展示的是我数据库中存储的用户信息数据,假设公司非开发人员需要用到这些数据,我们需要将导出到Excel中并交给他们。
在这里插入图片描述
小细节:图片也要导出到Excel表格中

实战开发:

1、导入EasyPoi相关依赖

 <dependency>
      <groupId>cn.afterturn</groupId>
      <artifactId>easypoi-base</artifactId>
      <version>4.0.0</version>
    </dependency>
    <dependency>
      <groupId>cn.afterturn</groupId>
      <artifactId>easypoi-web</artifactId>
      <version>4.0.0</version>
    </dependency>
    <dependency>
      <groupId>cn.afterturn</groupId>
      <artifactId>easypoi-annotation</artifactId>
      <version>4.0.0</version>
    </dependency>

2、编写实体类(重点)

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
    @Excel(name = "ID")
    private String id;
    @Excel(name ="昵称")
    private String name;
    @Excel(name="真实姓名")
    private String realname;
    @Excel(name = "注册日期",format = "yyyy-MM-dd")
    private Date reg_date;
    @Excel(name ="性别",replace = {"男_0","女_1"})
    private String sex;
    @Excel(name = "状态",replace = {"激活_0","冻结_1"})
    private String status;
    @Excel(name = "头像",type = 2,width = 40 , height = 20)
    private String img;
}

关于图片的小细节:需要在Excel中添加一个type属性值,并将值设置为2。height和width的值可以根据需要进行设置。

3、编写serviceImpl(重点)

 @Override
    public void export( HttpServletResponse res) throws IOException {
    //从数据库中将用户信息查询出来
        List<User> all = userDAO.findAll();
        //因为数据库中只存了图片的名字,我们在这里需要对于图片路径封装到User对象中
        for (User user : all) {
            String img = user.getImg();
            //图片在项目中的存储路径前缀
            String path = "http://localhost:8989/cmfz_lsg/bootstrap/img/";
             //图片在项目中的存储路径
            String newPath= path+img;
            user.setImg(newPath);
        }
        
        Workbook wb = ExcelExportUtil.exportExcel(new ExportParams("持明法州用户信息表", "VIP用户", "员工信息表"), User.class, all);
        
         try {
         //设置下载的文件名,中文需要进行编码处理
            String encode = URLEncoder.encode("用户信息表.xls", "UTF-8");
            //设置响应头信息,以附件形式下载
            res.setHeader("content-disposition","attachment;filename="+encode);
            //获取输出流
            ServletOutputStream outputStream = res.getOutputStream();
            wb.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
        //关闭资源
            wb.close();
        }

4、编写控制层(非重点)

为了流程的完整性,这里我将控制层的代码也贴出来。

@RequestMapping("poiOut")
    public void poiOut(HttpServletResponse response){
        try {
        //就是对service的方法进行调用
            userService.export(response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

5、前端页面展示

点击导出按钮,向后台发送导出请求即可。
在这里插入图片描述

成功展示:

1、点击导出按钮

在这里插入图片描述
自定义下载的位置。

2、导出表格展示

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值