vue + elementui 实现前端读取 excel 表格内容

有帮助的话,给点个赞赞吧,谢谢啦!!!

我们要实现的效果是点击<el-button>按钮,然后选择excel文件,读取excel文件中的内容,并将内容展示到<el-table>表格中

 

效果图如上:

首先html的代码为:

  <el-upload
    class="upload-demo"
    action=""
    :on-change="handleChange"
    :show-file-list="false"
    :auto-upload="false">
    <el-button size="small" type="primary" style="margin-bottom:15px;">读取excel文件</el-button>
  </el-upload>
  <el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column prop="id" label="Id" width="180"></el-table-column>
    <el-table-column prop="name" label="姓名" width="180"></el-table-column>
     <el-table-column prop="number" label="数量" width="180"></el-table-column>
    <el-table-column label="操作">
      <template slot-scope="scope">
        <a @click="handleDelete(scope)">删除</a> |
        <a @click="handelEdit(scope)">修改</a>
      </template>
    </el-table-column>
  </el-table>

date中代码:

 data() {
    return {
       tableData: [],
    fileContent: '',
    file: '',
    data: ''
    };
  },

methods中代码:

  methods: {
     handleDelete (item) {
    
    console.log('handleDelete', item)
  },
  handelEdit (item) {
    
    console.log('handleDelete', item)
  },
// 核心部分代码(handleChange 和 importfile)
handleChange (file) {
  console.log(file);
  this.fileContent = file.raw
  const fileName = file.name
  const fileType = fileName.substring(fileName.lastIndexOf('.') + 1)
    if (this.fileContent) {
    
      if (fileType === 'xlsx' || fileType === 'xls') {
    
        this.importfile(this.fileContent)
      } else {
    
        this.$message({
    
          type: 'warning',
          message: '附件格式错误,请重新上传!'
        })
      }
    } else {
    
      this.$message({
    
        type: 'warning',
        message: '请上传附件!'
      })
    }
  },
 importfile (obj) {
    console.log(obj);
   const reader = new FileReader()
   const _this = this
   reader.readAsArrayBuffer(obj)
   reader.onload = function () {
    
     const buffer = reader.result
     const bytes = new Uint8Array(buffer)
     const length = bytes.byteLength
     let binary = ''
     for (let i = 0; i < length; i++) {
    
       binary += String.fromCharCode(bytes[i])
     }
      const XLSX = require('xlsx')
      const wb = XLSX.read(binary, {
    
        type: 'binary'
      })
      const outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
      this.data = [...outdata]
      const arr = []
      this.data.map(v => {
    
        const obj = { }
     
        obj.name = v.name
         obj.id = v.id
         obj.number=v.number
         console.log(obj);
        arr.push(obj)
      })
      _this.tableData = _this.tableData.concat(arr)
    }
  },
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue.js 是一个流行的 JavaScript 框架,它是一款轻量级、高性能的渐进式框架,适用于构建单页面应用程序和更大规模的应用程序。ElementUI 是一款基于 Vue.js 的组件库,提供了丰富的 UI 组件和交互式构建工具,能够帮助开发人员快速构建美观、易于使用的前端页面。 在使用 Vue.jsElementUI 实现前端页面时,可以通过以下几个方面进行可行性分析: 1. 技术选型分析:Vue.jsElementUI 是成熟的前端框架和组件库,它们具有丰富的功能和良好的文档支持,易于学习和使用。因此,从技术角度来看,使用 Vue.jsElementUI 实现前端页面是可行的。 2. 项目需求分析:在确定使用 Vue.jsElementUI 实现前端页面之前,需要对项目需求进行分析和评估,确定是否需要使用这些框架和组件库。如果项目需要构建大型的单页面应用程序或需要使用复杂的 UI 组件,那么使用 Vue.jsElementUI 可以提高开发效率和用户体验。 3. 团队技能评估:如果团队已经熟练掌握了 Vue.jsElementUI 的使用,那么使用这些框架和组件库实现前端页面的可行性更高。如果团队没有相关技能,需要考虑学习和培训的成本。 4. 性能评估:在使用 Vue.jsElementUI 实现前端页面时,需要对性能进行评估,确保页面响应速度和用户体验。可以使用各种工具和技术来优化性能,如使用懒加载、减少 HTTP 请求等。 综上所述,使用 Vue.jsElementUI 实现前端页面是可行的,但需要进行技术选型分析、项目需求分析、团队技能评估和性能评估等方面的考虑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值