首页 > 其他分享 >VUE 前端读取excel表格内容

VUE 前端读取excel表格内容

时间:2023-11-14 16:34:29浏览次数:32  
标签:VUE const 读取 excel sheet console log


  <el-upload
      class="upload-demo"
      :action="''"
      :show-file-list="false"
      :auto-upload="false"
      :before-upload="beforeUpload"
      :on-success="handleSuccess"
      :on-change="handleFileChange"
      :accept="acceptString"
      name="file"
  >
    <el-button class="opt-row-btn" slot="trigger">上传表格</el-button>
  </el-upload>


    async handleFileChange(file) {
      console.log(file);
      const dataBinary = await new Promise((resolve) => {
        // Web API构造函数FileReader,可实例化对象,去调用其身上方法,去读取解析文件信息
        const reader = new FileReader();
        reader.readAsBinaryString(file.raw); // 读取raw的File文件
        reader.onload = (ev) => {
          // console.log("文件解析流程进度事件", ev);
          resolve(ev.target.result); // 将解析好的结果扔出去,以供使用
        };
      });
      const workBook = read(dataBinary, {type: 'binary', cellDates: true});
      const firstWorkSheet = workBook.Sheets[workBook.SheetNames[0]];
      // 分为第一行的数据,和第一行下方的数据
      const header = this.getHeaderRow(firstWorkSheet);
      console.log('读取的excel表头数据(第一行)', header);
      const data = utils.sheet_to_json(firstWorkSheet);
      console.log('读取所有excel数据', data);

      this.exportVisible = false;
    },
    getHeaderRow(sheet) {
      const headers = []; // 定义数组,用于存放解析好的数据
      const range = utils.decode_range(sheet['!ref']); // 读取sheet的单元格数据
      let C;
      const R = range.s.r;
      /* start in the first row */
      for (C = range.s.c; C <= range.e.c; ++C) {
        /* walk every column in the range */
        const cell = sheet[utils.encode_cell({c: C, r: R})];
        /* find the cell in the first row */
        let hdr = 'UNKNOWN ' + C; // <-- replace with your desired default
        if (cell && cell.t) hdr = utils.format_cell(cell);
        headers.push(hdr);
      }
      return headers; // 经过上方一波操作遍历,得到最终的第一行头数据
    },

标签:VUE,const,读取,excel,sheet,console,log
From: https://www.cnblogs.com/alioth01/p/17831940.html

相关文章

  • vue3 AntV-X6 引入插件报错
    vue3AntV-X6引入插件报错:UncaughtTypeError:Cannotreadpropertiesofundefined(reading'ToolItem')vite引入路径的问题解决就是在引入插件的路径后面加上/lib:import{Keyboard}from'@antv/x6-plugin-keyboard/lib'直接写 import{Keyboard}from'@antv/......
  • vue基于vue-pdf实现pdf预览
    <template><divclass="pdf-container"><divclass="page-tool">文件名称扩展<divclass="page-tool-fixed"v-if="showTool"><spanclass="sc......
  • 如何实现元素的平滑上升?(vue和react版)
    首先我们看下我们有时候需要在官网或者列表中给元素添加一个动画使元素能够平滑的出现在我们的视野中。 如上图所示,我们在vue中可以自定义指令,当我们需要的时候可以直接使用。废话不多说直接上代码。首先我们创建一个vSlideIn.ts文件import{DirectiveBinding}from'vue......
  • Vue3调用Element-plus涉及子组件v-model双向绑定props问题
    Vue3调用Element-plus涉及子组件v-model双向绑定props问题在Vue3调用Element-plus的el-dialog组件时,碰到个很有意思的问题,el-dialog的属性值v-model直接控制对话框的显示与否,点击关闭对话框和遮罩区域,组件内部会自动更改v-model的值为false来关闭对话框。问题在于当组件作为子组......
  • vuejs3.0 从入门到精通——Pinia——定义Store
    定义Store Store是用defineStore()定义的,它的第一个参数要求是一个独一无二的名字:import{defineStore}from'pinia'//你可以对`defineStore()`的返回值进行任意命名,但最好使用store的名字,同时以`use`开头且以`Store`结尾。(比如`useUserStore`,`useCartStore......
  • 在vue项目开发过程中,输入框以表单形式提交后,路径中多了问号?
    结果是:http://localhost:8100/#/  改变为  http://localhost:8100/?#/  导致路由跳转出现问题。 原因:这里是form表单,点击了button按钮,触发了他的默认事件,就是触发了提交这个行为。 解决方案:使用@click.prevent阻止默认事件 <a-buttontype="primary"@click.pr......
  • Excel文件批量合并
    1.首先把所有需要合并的表格放在一个文件夹里,方便后续选取数据。2.打开其中一张表格,点击【数据】-【新建查询】-【从文件】-【从文件夹】。3. 在弹出框中,选择需要汇总的表格所存放的文件夹,点击【确定】。4.在【组合】中选择【合并和加载】,点击【确定】。然后点击【Sheet1......
  • 推荐一个前端读取CSV文件的插件Papa Parse
    PapaParse点击跳转到官网,该插件可以将文件解析成2层数组。下面是vue项目引用的方法1.安装npminstallvue-papa-parse2.引入,在main.js里importVuefrom'vue'importVuePapaParsefrom'vue-papa-parse'Vue.use(VuePapaParse)3.使用,例如delimiter这类配置,可以参考......
  • vuejs3.0 从入门到精通——Pinia——Store 是什么?
    Pinia——Store是什么?https://pinia.vuejs.org/zh/getting-started.html#what-is-a-store一、Store是什么? Store(如Pinia)是一个保存状态和业务逻辑的实体,它并不与你的组件树绑定。换句话说,它承载着全局状态。它有点像一个永远存在的组件,每个组件都可以读取和写入它。......
  • 深入理解 Vuex
    Vue.js是一款轻量级、灵活且易学的前端框架,但随着应用的复杂性增加,组件之间的状态管理变得愈发复杂。为了解决这一问题,Vue.js提供了一个强大的状态管理工具——Vuex。在本篇博客中,我们将深入探讨Vuex的核心概念和使用方法,并通过实例演示如何优雅地管理应用状态。什么是Vuex?Vue......