实战10:SpringBoot和Vue实现导入导出

目录

1 、依赖

2、服务端导入导出代码

3、前端代码


1 、依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.20</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

hutool官网:简介 | Hutool

2、服务端导入导出代码

@GetMapping("/export") 
public void export(HttpServletResponse response) throws Exception {
    List < User > list = userService.list();
    //通过工具类创建writer,写出到磁盘路径
    //ExportWriter writer = ExcelUtil.getWriter(filesuploadPath + "/用户信息.xlsx")
    //在内存操作,写出到浏览器
    // 通过工具类创建writer,默认创建xls格式
    ExcelWriter writer = ExcelUtil.getWriter();
    //自定义标题别名
    //        writer.addHeaderAlias("username","用户名");
    //        writer.addHeaderAlias("password","密码");
    //        writer.addHeaderAlias("nickname","昵称");
    //        writer.addHeaderAlias("email","邮箱");
    //        writer.addHeaderAlias("phone","电话");
    //        writer.addHeaderAlias("address","地址");
    //        writer.addHeaderAlias("createTime","创建时间");
    //        writer.addHeaderAlias("avatarUrl","头像");
    // 一次性写出内容,使用默认样式,强制输出标题
    writer.write(list, true);
    //设置浏览器响应格式
    //response为HttpServletResponse对象
    response.setContentType("application/vnd.openxmlformats-officedocument.preadsheetml;charset=utf-8");
    //fileName是弹出下载对话框的文件名,不能为中文,中文请自行编码
    String fileName = URLEncoder.encode("用户信息", "UTF-8");
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
    ServletOutputStream out = response.getOutputStream();

    writer.flush(out, true);
    // 关闭writer,释放内存
    writer.close();
    //此处记得关闭输出Servlet流
    IoUtil.close(out);
}
@PostMapping("/import") 
public Boolean imp(MultipartFile file) throws Exception {
    InputStream inputStream = file.getInputStream();
    ExcelReader reader = ExcelUtil.getReader(inputStream);
    //       通过JavaBean的方式读取Excel内的对象,要求表头是英文,跟Javabean属性对应起来
    //        List<User> list = reader.readAll(User.class);
    //忽略表头的中文
    List < List < Object >> list = reader.read(1);
    List < User > users = CollUtil.newArrayList();
    for (List < Object > row: list) {
        User user = new User();
        user.setUsername(row.get(0).toString());
        user.setPassword(row.get(1).toString());
        user.setNickname(row.get(2).toString());
        user.setEmail(row.get(3).toString());
        user.setPhone(row.get(4).toString());
        user.setAddress(row.get(5).toString());
        user.setAvatarUrl(row.get(6).toString());
        users.add(user);
    }
    userService.saveBatch(users);
    return true;
}

 3、前端代码

      <el-upload action="http://localhost:9090/user/import" :show-file-list="false" :accept="'xlsx'" :on-success="handleExcelImportSuccess" style="display: inline-block;">
        <el-button type="primary" class="ml-5" >导入<i class="el-icon-bottom"></i></el-button>
      </el-upload>
      <el-button type="primary" class="ml-5" @click="exp">导出<i class="el-icon-top"></i></el-button>
   exp(){
      window.open("http://localhost:9090/user/export")
    },
    handleExcelImportSuccess(){
      this.$message.success("导入成功")
      this.load()
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值