vue中使用xlsx后不能返回数据

之森
  • 13

// vue

 <input
  type="file"
  @change="importExcel($event)"
  ref="importExcel"
  id="importExcel"
  style="display:none;"
  accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" >
<a id="exportExcel" ref="exportExcel"></a>
<a-button type="primary" class="button" @click="btnImportClick">导入Excel</a-button>
<a-button type="primary" class="button" @click="btnExportClick(excelData)" style="margin-left:20px;">导出Excel</a-button>`
              
 export const importExcelMethods = function(event) {
    if (!event.target.files) {
        return
      }
      var suffix = event.target.files[0].name.split('.')[1]
      if (suffix != 'xls' && suffix != 'xlsx') {
        alert('导入的文件格式不正确!')
        return
      }
      var f = event.target.files[0]
      var reader = new FileReader()
      reader.onload = function (e) {
        var data = e.target.result
        if (rABS) {
          wb = XLSX.read(btoa(fixdata(data)), {
            //手动转化
            type: 'base64',
          })
        } else {
          wb = XLSX.read(data, {
            type: 'binary',
          })
        }
        const wsname = wb.SheetNames[0]
        const ws = wb.Sheets[wsname]
        const zdata = utils.sheet_to_json(ws, { header: 1 })
        const newData = JSON.stringify(
          XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
        )
        console.log('===',newData)
      }
      if (rABS) {
        reader.readAsArrayBuffer(f)
      } else {
        reader.readAsBinaryString(f)
      }
    }
    //调用
  
  importExcel(event){
  const myevent = event
  importExcelMethods(myevent)
},

现在的问题是:我封装渲染后想返回zdata,但是就是显示undefined
回复
阅读 908
2 个回答

我看你 importExcelMethods这个方法也没返回什么东西额 没明白你说的显示undefined的是指哪里

你里面没有return,所以返回的就是undefined。

然后因为是异步的,所以有两种方案

  1. promise
  2. callback
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏