首页 > 其他分享 >vue中上传excel文件的方法

vue中上传excel文件的方法

时间:2022-09-19 18:58:30浏览次数:94  
标签:vue console log title excel obj reader const 上传

1.使用方法

  <input type="file" @change="importExcel"> 或者使用element-ui
<el-upload ref="input" action="/" :show-file-list="false" :auto-upload="false" :on-change="importExcel" type="file">
      <el-button slot="trigger" icon="el-icon-upload" size="small" type="primary">上传文件</el-button>
</el-upload>

2.vue中data的定义

data() {
    return {
      contentData: [
        { id: 1, title: "读书" },
        { id: 2, title: "读书" },
        { id: 3, title: "读书" },
        { id: 4, title: "读书" },
      ],
    };
  },

3.导入文件的事件

 //导入
    importExcel(file, fileList) {
      // console.log(file);
      // console.log(fileList);
      // 获取上传excel文件的信息
      const fileContent = file.raw;
      // 获取文件类型
      const types = file.name.split(".")[1];
      const fileType = ["xlsx", "xlc", "xlm", "xls", "xlt"].some(
        (item) => item === types
      );
      if (!fileContent) {
        if (!fileType) {
          alert("格式错误!请重新选择");
          return;
        }
      }
      this.importfile(fileContent);
    },
    // 文件数据的处理
    importfile(obj) {
      // console.log(obj)
      // 文件读取
      const reader = new FileReader();
      // console.log(reader)
      const _this = this;
      // 按字节读取文件内容,结果用ArrayBuffer对象表示
      reader.readAsArrayBuffer(obj);
      //  读取操作完成时触发的事件(reader.onload)
      reader.onload = function () {
        const buffer = reader.result;
        // console.log(reader.result)
        // Uint8Array 数组类型转化为16进制字符串
        const bytes = new Uint8Array(buffer);
        // console.log(bytes)
        const length = bytes.byteLength;
        let binary = "";
        for (let i = 0; i < length; i++) {
          // 转码
          binary += String.fromCharCode(bytes[i]);
        }
        const XLSX = require("xlsx");
        // 获取excel表格中的表头
        const wb = XLSX.read(binary, {
          type: "binary",
        });
        console.log(wb);

        // 获取excel表格数据
        // wb.SheetNames[0]:excel表格的第几个工作表格  wb.Sheets是获取工作表格数据
        // XLSX.utils.sheet_to_json 从工作表创建 JS 值数组的数组
        const outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[1]]);
        // console.log(outdata);
        const data = [...outdata];
        // 定义转化完成的数据
        const arr = [];
        // 将每一项的数据进行转化
        data.map((v) => {
          const obj = {};
          //换成你的字段名称
          // obj.title: 字段名 , v.名称:Excel中表单标题行名
          obj.id = v.序号;
          obj.title = v.名称;
          arr.push(obj);
        });
        // console.log(arr)
        //_this.contentData换成你要导入的table表 (将上传的数据直接拼接到已有的数据里进行展示)
        _this.contentData = _this.contentData.concat(arr);
      };
    },

 

标签:vue,console,log,title,excel,obj,reader,const,上传
From: https://www.cnblogs.com/jingxin01/p/16708666.html

相关文章

  • 【Vue项目实践】vue 创建一个新项目
    参考链接:Vite+Electron快速构建一个VUE3桌面应用(一)创建一个Vite项目安装vite并创建项目,输入项目名,模板采用vue,其他的根据情况,可以先全部Noyarncreatevite......
  • tp5-实现资料下载&后台文件上传DOX/PDF/DOCX
    后台上传: 后台代码:<dl><labelclass="item-label"for="my-file-input">文件:</label><ahref="{$info.file_url}">{$info.file_name}</a>......
  • vue3组件的几种引入、注册、自动注册等
    全局组件的注册和引入全局组件注册components/index.js【方式一:先引入后注册】importBgImagefrom"@/components/global/web-background/bg-image.vue";importBa......
  • 2022-09-19 Error: Cannot find module '项目\node_modules\@vue\cli-service\bin
    前言:wepy项目迁移uniapp使用wepy-to-uniapp转换代码后初始化依赖抛出的错误:Error:Cannotfindmodule'项目\node_modules\@vue\cli-service\bin\vue-cli-service.js'网......
  • MinIO实现文件上传
    一、使用Docker安装miniodockerrun-d-p9000:9000-p9001:9001--nameminio-eMINIO_ACCESS_KEY=qbb-eMINIO_SECRET_KEY=startqbb-v/opt/minio/data:/data-v/......
  • vue3中vuex使用实例
    通过脚手架创建项目会自动创建store/index.js1.vuex基本结构import{createStore}from'vuex'exportdefaultcreateStore({//全局的状态初始值state:{},......
  • Vue3中使用ref获取元素节点
    本文介绍在vue3的setup中使用compositionAPI获取元素节点的几种方法:静态绑定仅仅需要申明一个ref的引用,用来保存元素,在template中,不必bind引用(:ref="domRef"),只需要声......
  • vue中防抖函数的写法以及用法
    1.准备好防抖函数functiondebounce(func,wait){lettimeout;returnfunction(...args){if(timeout)clearTimeout(timeout);l......
  • vue-baidu-map 搜索定位
    1、引入vue-baidu-map插件npminstallvue-bai-map--save2、注册(我这里是采用全局注册main.js)ak是你自己申请的3、html4、数据定义5、JS......
  • 记录 IIS 部署vue 项目步骤
    IIS部署vue项目一.相关软件安装request_router,url_rewrite链接:https://pan.baidu.com/s/1SpyKWY9ejab1WP0-oKKJBg提取码:gldp安装效果如下:二.vue发布前端build......