vue上传表格的时候解析数据_Vue XLSX Excel解析

"自用。"

预览:

excel:

766c5df453a6940de3f22aa4af496f41.png

上传后用xlsx解析效果:

baccd7962d305422cd91a50e4c96a519.png

Vue

<template>  <div>        <el-upload class="upload-demo" drag action="http://127.0.0.1:3344/file" accept=".xlsx" :on-exceed="exceed"      :limit="1" :on-remove="remove" :before-upload="beforeUpload">      <i class="el-icon-upload">i>      <div class="el-upload__text">        将文件拖到此处,或        <em>点击上传em>      div>      <div class="el-upload__tip" slot="tip">1次只能上传1个xls文件,且不超过500kbdiv>    el-upload>        <el-card class="preview-excel" v-show="listTable.length != 0" style="margin-top: 20px;">      <el-table class="listTable_ele" align="center" :data="listTable" stripe height="500px" style="width:100%">        <el-table-column prop="name" label="姓名" width="200" align="center">el-table-column>        <el-table-column prop="age" label="年龄" width="200" align="center" sortable>el-table-column>        <el-table-column prop="city" label="城市" width="200" align="center">el-table-column>        <el-table-column prop="sno" label="学号" width="200" align="center">el-table-column>      el-table>    el-card>  div>template><script>  import XLSX from "xlsx";  //引入xlsx  export default {    data() {      return {        listTable: []      };    },    methods: {      //解析excel      async uploadFile(file) {        const _file = file;        const fileReader = new FileReader();        fileReader.onload = (ev) => {          try {            const data = ev.target.result;            const workbook = XLSX.read(data, {              type: 'binary'            });            for (let sheet in workbook.Sheets) {              //循环读取每个文件              const sheetArray = XLSX.utils.sheet_to_json(workbook.Sheets[sheet]);              //若当前sheet没有数据,则continue              if (sheetArray.length == 0) {                continue;              }              console.log("读取文件");              // console.log(sheetArray);              for (let item in sheetArray) {                let rowTable = {};                //这里的rowTable的属性名注意要与上面表格的prop一致                //sheetArray的属性名与上传的表格的列名一致                rowTable.name = sheetArray[item].姓名;                rowTable.age = sheetArray[item].年龄;                rowTable.city = sheetArray[item].城市;                rowTable.sno = sheetArray[item].学号;                this.listTable.push(rowTable);              }              console.log(this.listTable)            }          } catch (e) {            this.$message.warning('文件类型不正确!');          }        };        fileReader.readAsBinaryString(_file);      },      //上传1个以上文件时弹窗提示错误      exceed: function () {        this.$message.error("最多只能上传1个xls文件");      },      //删除文件      remove() {        this.listTable = [];      },      // 上传文件前      beforeUpload(file) {        // console.log(file)        this.uploadFile(file)        return false      }    }  };script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值