纯前端实现excel的导入导出

安装

$ yarn add xlsx@0.16.9

前端导入excel

    async analyseExcelToJson(file) {
      // 这里new一个Promise作为异步处理
      return new Promise((resolve, reject) => {
        // 判断file是不是文件类型
        if (file instanceof File) {
          const reader = new FileReader()
          reader.onloadend = () => {
            const arrayBuffer = reader.result
            const options = { type: 'array' }
            const workbook = XLSX.read(arrayBuffer, options)
            const sheetName = workbook.SheetNames[0]
            const sheet = workbook.Sheets[sheetName]
            const json = XLSX.utils.sheet_to_json(sheet)
            resolve(json)
          }
          reader.readAsArrayBuffer(file)
        } else {
          reject(new Error('入参不是 File 类型'))
        }
      })
    },

然后进行调用这段函数,传入excel的文件

    async Import() {
      // 获取文件的[0]
      const file = this.$refs.dle.files[0]
      if (file instanceof File) {
        try {
          // 调用函数拿到值
          const sheet = await this.analyseExcelToJson(file)
          // 对拿到的值进行遍历处理
          const data = Object.values(sheet).map((row) => {
            // console.log(row)
            // 值是表头下的值
            return {
              date: row.date,
              name: row.name,
              province: row.province,
              city: row.city,
              address: row.address,
              zip: row.zip,
            }
          })
          // 最后返回问数组包对象的格式
          console.log(data)
        } catch (error) {
          console.error(error)
        }
      } else {
        console.error(new Error('入参不是 File 类型'))
      }
    },

前端导出excel

    // 这个是表格导出
    excel() {
      const sheet = XLSX.utils.json_to_sheet(this.tableData)
      const workbook = XLSX.utils.book_new()
      XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1')
      return XLSX.writeFile(workbook, 'ccc.xlsx', { type: 'binary' })
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值