vue excel的导入

 导入前是这样的

导入后

 第一步。写入封装代码

export function delay(interval = 0) {

    return new Promise(resolve => {

      let timer = setTimeout(()=> {

        clearTimeout(timer)

        resolve()

      }, interval)

    })

  }

  // 按照二进制读取文件

  export function readFile(file) {

    return new Promise(resolve => {

      let reader = new FileReader()

      reader.readAsBinaryString(file)

      reader.onload = e => {

        resolve(e.target.result)

      }

    })

  }

  // 字段对应表

  export let character = {

    name: {

      text: '姓名',

      type: 'string'

    },

    phone: {

      text: '电话',

      type: 'string'

    }

  }

  // 时间字符串格式化

  export function formatTime(str, tpl) {

    let arr = str.match(/\d+/g).map(item => {

      return item.length < 2 ? '0' + item : item

    })

    tpl = tpl || '{0}年{1}月{2}日 {3}时{4}分{5}秒'

    return tpl.replace(/\{(\d+)\}/g, (_, group) => {

      return arr[group] || '00'

    })

  }

 第三步在组件 写

import xlsx from 'xlsx'

import{readFile} from '../src/assets/utils'


 

export default {

  name: 'app',

  data(){

    return{

        dataTab:[]    

        }

  },

  methods:{

   async handle(ev){

      console.log(ev)

      let file=ev.raw

      if(!file) return

      let data= await readFile(file)

      let workbook=xlsx.read(data,{type:"binary"})

      console.log(workbook)

      let worksheet = workbook.Sheets[workbook.SheetNames[0]]

      this.dataTab = xlsx.utils.sheet_to_json(worksheet) // 将数据转换成JSON格式

      console.log(this.dataTab)

      let arr = []

      // data.forEach(item => {

      //   let obj = {}

      //   for (let key in character) {

      //     if (!character.objecthasOwnProperty(key)) break

      //     let v = character[key],

      //       text = v.text,

      //       type = v.type

      //     v = item[text] || ''

      //     type === 'string' ? (v = String(v)) : null

      //     type === 'number' ? (v = Number(v)) : null

      //     obj[key] = v

      //   }

      //   arr.push(obj)

      // });

      console.log(arr)

    }

  }

}

第四步:把获取到的数据传给表格即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值