avue 导入 + 导出 excel方法

<template>
  <basic-container>
    <avue-crud
      :table-loading="loading"
      :data="data"
      :option="option"
      :page.sync="page"
      @on-load="onLoad"
      @row-update="rowUpdate"
      @row-save="add"
      @row-del="rowDel"
      @search-change="searchChange"
      @refresh-change="refreshChange"
    >
      <template slot="menuLeft">
        <el-button
          type="primary"
          icon="el-icon-upload2"
          size="small"
          @click="excelChang"
        >导入</el-button>
        <el-dialog title="导入手机号" :visible.sync="dialogVisible" :modal-append-to-body="false">
          <div><span style="color:red;">*</span>导入说明:请下载导入模板,在模板中填写用户的信息,将填写完毕的文件在文件上传窗口中选择后导入系统,导入数据后系统会显示提示信息,按提示信息操作即可。</div>
          <el-button style="margin:10px 0 10px 0;" type="primary" icon="el-icon-upload" @click="downExcel">下载导入模版</el-button>
          <el-upload
            action="注入你的导入接口"
            :on-change="onChange"
            :auto-upload="false"
            :show-file-list="false"
            accept=".xls, .xlsx"
          >
            <div class="grace-flex" style="width:100%;">
              <el-input style="margin-right:20px;"  v-model="input" :disabled="true"></el-input>
              <el-button type="primary" icon="el-icon-upload2">导入</el-button>
            </div>
          </el-upload>
          <textarea disabled style="width:100%;min-height:200px;" v-html="form"></textarea>
        </el-dialog>
      </template>
    </avue-crud>
  </basic-container>
</template>

 

<--------

主要 js部分

------->

 /*
        execl 导入/导出 方法  start
    */
    // 文件选择回调
    onChange(file, fileList) {
      console.log(fileList);
      this.fileData = file; // 保存当前选择文件
      this.readExcel(); // 调用读取数据的方法
    },
    // 读取数据
    readExcel(e) {
      console.log(e);
      let _self = this;
      const files = _self.fileData;
      console.log(files);
      _self.input = files.name;
      if (!files) {
        //如果没有文件
        return false;
      } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) {
        this.$message.error("上传格式不正确,请上传xls或者xlsx格式");
        return false;
      }
      const fileReader = new FileReader();

      fileReader.onload = (ev) => {
        try {
          const data = ev.target.result;
          // console.log(data)
          const workbook = this.XLSX.read(data, {
            type: "binary",
          });
          console.log(workbook.SheetNames);
          if (workbook.SheetNames.length >= 1) {
            this.$message({
              message: "导入数据表格成功",
              showClose: true,
              type: "success",
            });
          }
          const wsname = workbook.SheetNames[0]; //取第一张表
          const ws = this.XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容
          _self.outputs = []; //清空接收数据
          _self.studentlist = []; //清空接受数据
          for (var i = 0; i < ws.length; i++) {
            var sheetData = {
              // 键名为绑定 el 表格的关键字,值则是 ws[i][对应表头名]
              acm_id: _self.$route.query.data.id,
              acd_grade: ws[i]["年级"],
              acd_class: ws[i]["班级"],
              parents_name: ws[i]["家长姓名"],
              stu_name: ws[i]["学生姓名"],
              acd_phone_num: ws[i]["手机号码"],
            };
            _self.studentlist.push(sheetData);
          }
          console.log(_self.studentlist, "77777");
          _self.excelDr(_self.studentlist);
          this.$refs.upload.value = "";
        } catch (e) {
          return false;
        }
      };
      // 如果为原生 input 则应是 files[0]
      fileReader.readAsBinaryString(files.raw);
    },
    // 导出方法
    downExcel() {
      this.$export.excel({
        title: "手机号导入模版",
        columns: [
          { label: "年级", prop: "acd_grade" },
          { label: "班级", prop: "acd_class" },
          { label: "家长姓名", prop: "parents_name" },
          { label: "学生姓名", prop: "stu_name" },
          { label: "手机号码", prop: "acd_phone_num" },
        ],
        data: [],
      });
    },
    /*execl 导入 方法  end*/

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
好的,这里是SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel方法。 1. 添加依赖 在 pom.xml 文件中添加以下依赖: ```xml <!-- easyExcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6</version> </dependency> <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> ``` 2. 创建实体类 创建一个实体类,用于映射 Excel 表格中的数据。 ```java @Data public class User { @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private Integer age; @ExcelProperty("性别") private String gender; } ``` 3. 创建Excel读取器 创建一个 Excel 读取器,用于读取 Excel 表格中的数据,并将数据存储到数据库中。 ```java @Component public class ExcelReader { @Autowired private UserService userService; /** * 读取 Excel 表格中的数据,并将数据存储到数据库中 */ public void readExcel(String fileName) { EasyExcel.read(fileName, User.class, new UserExcelListener()).sheet().doRead(); } /** * 用户Excel监听器 */ private class UserExcelListener extends AnalysisEventListener<User> { /** * 每读取一行数据,就会调用该方法 */ @Override public void invoke(User user, AnalysisContext context) { userService.save(user); } /** * 读取完整个 Excel 表格后,会调用该方法 */ @Override public void doAfterAllAnalysed(AnalysisContext context) { // do nothing } } } ``` 4. 创建Excel导出器 创建一个 Excel 导出器,用于从数据库中获取数据,并将数据导出Excel 表格中。 ```java @Component public class ExcelWriter { @Autowired private UserService userService; /** * 将用户数据导出Excel 表格中 */ public void writeExcel(String fileName) { List<User> userList = userService.list(); EasyExcel.write(fileName, User.class).sheet().doWrite(userList); } } ``` 5. 创建Controller 创建一个 Controller,用于接收前端请求,并调用相应的方法处理请求。 ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private ExcelReader excelReader; @Autowired private ExcelWriter excelWriter; /** * 批量导入用户数据 */ @PostMapping("/import") public void importExcel(@RequestParam("file") MultipartFile file) throws IOException { excelReader.readExcel(file.getInputStream()); } /** * 导出用户数据到Excel */ @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws IOException { String fileName = "用户信息.xlsx"; response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); response.setContentType("application/vnd.ms-excel"); excelWriter.writeExcel(response.getOutputStream()); } } ``` 6. 配置文件 在 application.yml 文件中添加数据库连接信息。 ```yaml spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: root mybatis-plus: mapper-locations: classpath:/mapper/*.xml type-aliases-package: com.example.demo.domain ``` 7. 测试 启动应用程序,并在浏览器中访问以下地址: - http://localhost:8080/user/export :导出 Excel 表格 - http://localhost:8080/user/import :导入 Excel 表格 以上就是 SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel方法了,希望能帮到你。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值