使用hutool完成上传、下载功能

1.前端使用element ui

        1.1下载

npm i element-ui -S

         1.2引入

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI,{size:'mini'});

导入jar包(后端)

        <!--		hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-poi</artifactId>
            <version>5.8.18</version>
        </dependency>
        <!--        poi-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.0.0</version>
        </dependency>

  2.导出(前端)

<template>
    <el-button type="primary" @click="exportBtn" class="ml-5">导出<i class="el-icon-upload2"></i></el-button>
</template>

<script>
method(){
    exportBtn() {
      window.open("http://localhost:9090/user/download", '_top')
    },
}
</script>

后端、下载数据库中的数据到xlsx文件中(导出)

    //下载xlsx文件(下载)
    @GetMapping("/download")
    public void download(HttpServletResponse response) throws IOException {
        List<User> list = userService.list();
        //这个函数将一个List类型的参数list转换为ArrayList类型的对象,并将其赋值给users变量。
        //ArrayList是一种动态数组,它可以在运行时添加或删除元素。
//        ArrayList<User> users = CollUtil.newArrayList(list);
        // 通过工具类创建writer
        //  写到指定位置上
//        ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx");
        //先不指定下载位置,以便于生成在浏览器中
        //创建xlsx格式的
        ExcelWriter writer = ExcelUtil.getWriter(true);
        // 自定义标题名称
//        writer.addHeaderAlias("id", "编号");
        writer.addHeaderAlias("username", "姓名");
        writer.addHeaderAlias("password", "密码");
        writer.addHeaderAlias("nickname", "别名");
        writer.addHeaderAlias("email", "邮箱");
        writer.addHeaderAlias("phone", "手机号");
        writer.addHeaderAlias("address", "地址");
        writer.addHeaderAlias("createTime", "创建事件");
        // 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之
        writer.setOnlyAlias(true);
        // 一次性写出内容,使用默认样式,并输出标题
        writer.write(list, true);

        //response为HttpServletResponse对象
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        //编写文件格式
        String filename = URLEncoder.encode("用户信息", "UTF-8");
        //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
        response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".xlsx");

        //获取输出流
        ServletOutputStream out = response.getOutputStream();
        //写出文件
        writer.flush(out, true);
        //关闭输出流
        out.close();
        // 关闭writer,释放内存
        writer.close();
    }

 3.导入、前端

<template>
        <el-upload action="http://localhost:9090/user/import"
                   style="display: inline-block"
                   accept="xlsx"
                   :show-file-list="false"
                   :on-success="uploadSuccess">
          <el-button type="primary">导入<i class="el-icon-download"></i></el-button>
        </el-upload>
</template>

<script>
method(){
    //导入文件-成功回调
    uploadSuccess() {
      this.$message.success("上传成功")
      this.load()
    },
}
</script>

后端、上传xlsx文件数据到数据库中(导入)

 @PostMapping("/import")
    public boolean importExcel(MultipartFile file) throws IOException {
        //创建流对象
        InputStream inputStream = file.getInputStream();
        //ExcelReader对象
        ExcelReader reader = ExcelUtil.getReader(inputStream);
        //设置表头别名(改为数据库中对应的字段名)
        reader.addHeaderAlias("姓名", "username");
        reader.addHeaderAlias("密码", "password");

        List<User> users = reader.readAll(User.class);
        //存入数据库
        userService.saveBatch(users);
        return true;
    }

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talent_smile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值