vue 读取本地excel文件

<!--  -->
<template>
  <div>
      <input type="file" ref="upload" accept=".xls,.xlsx" >
  </div>
</template>

<script>
import XLSX from 'xlsx'   // 前提是npm xlsx
export default {
  data () {
    return {
        tabledata:[]   
    } 
  },

  components: {},

  computed: {},

  methods: {
    readExcel(e) {//表格导入
        var that = this;
        const files = e.target.files;
        var vali=/\.(xls|xlsx)$/
        if(files.length<=0){//如果没有文件名
            return false;
        }else if(!vali.test(files[0].name.toLowerCase())){
            this.$Message.error('上传格式不正确,请上传xls或者xlsx格式');
            return false;
        }
 
        const fileReader = new FileReader();
        fileReader.onload = (e) => {
        try {
            const data = e.target.result;
            const workdata = XLSX.read(data, {
            type: 'binary'
            });
            console.log(workdata)// 文件的内容
            ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200312135652176.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzM5MjU0NQ==,size_16,color_FFFFFF,t_70)
            //查看打印能看到 workdata的sheetNames里是文件中每个表的有值的集合;
            //每个值有三个属性:t: "s"  v: "a"   w: "a"  t应该是type的意思,其他两个就是内容了应该;
            
            const wsname = workdata.SheetNames[0];//取第一张表
            const ws = XLSX.utils.sheet_to_json(workdata.Sheets[wsname]);//生成json表格内容
            console.log(ws);  //自第二行开始的内容
            
			//{  这里可以做相应的处理 }
			//{  这里可以做相应的处理 }
			
            this.$refs.upload.value = ''; // 处理完成 清空表单值
 
        } catch (e) {
            return false;
        }
        };
        fileReader.readAsBinaryString(files[0]);
    }
  },

  mounted(){
    this.$refs.upload.addEventListener('change', e => {//绑定监听表格导入事件
      this.readExcel(e);
    })
  }
}
</script>
<style lang='scss' scoped>
</style>
Vue应用中,要通过文件流(File Stream)从本地读取Excel文件,你可以使用第三方库如`xlsx`或`js-xlsx`,它们提供了处理Excel文件的功能。以下是一个基本的步骤: 1. 首先,确保在项目中安装必要的库。如果你还没有安装,可以通过npm或yarn进行安装: ```bash npm install xlsx // 或者 yarn add xlsx ``` 2. 创建一个方法,使用HTML5的`FileReader` API读取文件流。当用户选择文件后,这个方法会被触发。 ```javascript <template> <!-- ... --> <input type="file" @change="uploadExcelFile" /> </template> <script> import XLSX from 'xlsx'; export default { methods: { uploadExcelFile(e) { const file = e.target.files[0]; if (file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.type === 'application/vnd.ms-excel') { // 检查是否为Excel文件 const reader = new FileReader(); reader.onload = (event) => { try { const workbook = XLSX.read(event.target.result, {type: 'binary'}); // 这里你可以操作 workbook 对象,例如获取数据或解析单元格 const sheetNameList = workbook.SheetNames; console.log('Sheet names:', sheetNameList); } catch (error) { console.error('Error reading Excel file:', error); } }; reader.readAsArrayBuffer(file); // 使用ArrayBuffer读取文件 } else { alert('Please select an Excel (.xlsx or .xls) file.'); } }, }, }; </script> ``` 在这个例子中,我们首先检查文件类型是否是Excel,然后使用`FileReader`读取文件到`ArrayBuffer`,接着传递给`XLSX.read`函数转换为JS对象以便进一步操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值