vue3 + ts 导入excel文件 读取excel文件 获取

文章介绍了如何在Vue项目中使用xlsx库处理Excel文件上传,特别是针对view-ui-plus和elementplus组件的不同。关键步骤包括安装xlsx依赖,设置上传组件,读取文件内容,解析工作簿并转换成JSON数据。在处理文件时可能会遇到错误,解决办法是降级xlsx版本到0.16.0。
摘要由CSDN通过智能技术生成

先安装xlsx依赖

npm install--save xlsx

我用的是view-ui-plus的上传组件和element plus是有区别的 下面会说

	<Upload
	  class="upload-btn"
	  ref="upload"
	  :show-upload-list="false"
	  :format="['xlsx', 'xls']"
	  :max-size="2048"
	  :before-upload="handleBeforeUpload"
	  action="#"
	>
	  <Button class="m-left-10">批量导入询价</Button>
	</Upload>

在使用的页面引入

import XLSX from "xlsx";

新建tools.ts 创建readFile

/**
 * 读取excel
 * @param excel
 * @param readExcel
 * @returns
 */
export const readFile = (file: any) => {
  return new Promise(resolve => {
      let reader = new FileReader()
      reader.readAsBinaryString(file)
      reader.onload = (ev: any) => {
          resolve(ev.target.result)
      }
  })
}

在使用的页面引入tools

import { readFile } from "@/utils/tools";

调用readFile
element plus组件 注意看注释

   /**
   * 文件上传
   * element plus是on-change方法 同样是使用file参数 
   * 但是let dataBinary = await readFile(file) 要改成 readFile(file.row)
   */
  private async handleBeforeUpload(file: any) {
    let dataBinary = await readFile(file);
    let workBook = XLSX.read(dataBinary, { type: "binary", cellDates: true });
    let workSheet = workBook.Sheets[workBook.SheetNames[0]];
    const data = XLSX.utils.sheet_to_json(workSheet);
    console.log(data, "data");
  }

这时有些人会报错 TypeError: Cannot read properties of undefined (reading ‘read’)

卸载xlsx

npm uninstall xlsx

安装适配版本 我这里是0.16.0

npm install xlsx@0.16.0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值