Vue2.x + element ui 导入导出excel

VUE中导出excel的方案 方案1 1安装插件 npm install vue-json-excel 2在min.js中导入 import JsonExcel from 'vue-json-excel' Vue.component('downloadExcel', JsonExcel) 3 代码实现 <download-excel class = "export-excel-wrapper" :data = "json_data" :fields = "json_fields" 阅读详情

实现内容:

  • 导入excel文件最终将其展现在页面table中
  • 将页面table中的表格转换为excel文件

仓库地址:

完整代码在这里:https://github.com/Nigo-yyy/vue-excel

依赖安装:

需要安装三个依赖包, 和两个JS包

npm包:

分别安装 file-saver、 xlsx、 script-loader三个依赖

npm install -S file-saver xlsx(这里其实安装了2个依赖)

npm install -D script-loader

JS文件

在这里插入图片描述

src文件夹下新建 excel文件夹,放入以下两个文件:

Blob.js

expor2Excel.js

这两个文件可以在仓库中找到

至此,我们的准备工作就做完了,开始编写代码

template部分

<div class="home">
    <div class="control_wrap">
      <el-upload
        class="upload-demo"
        action=""
        :on-change="handleChange"
        :on-remove="handleRemove"
        :file-list="fileListUpload"
        limit="1"
        accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
        :auto-upload="false"
      >
        <el-tooltip content="只能上传xls/xlsx 文件" placement="top-start">
          <el-button style="margin-right: 20px" type="primary"
            >点击上传</el-button
          >
        </el-tooltip>
      </el-upload>
      <el-button type="warning" @click="getExcel(excelData)"
        >导出为excel</el-button
      >
    </div>
    <!-- <HelloWorld msg="Welcome to Your Vue.js App"/> -->
    <el-table
      v-if="excelData && excelData.length"
      :data="excelData"
      style="width: 95%; margin: 20px auto"
      border
    >
      <el-table-column
        v-for="(item, index) of colData"
        :key="index"
        :label="item.label"
      >
        <template slot-scope="scope">
          <span>{{ scope.row[item.prop] }}</span>
        </template>
      </el-table-column>
    </el-table>
  </div>

在el-upload 的 cahnge事件中 判断如果传入文件,且文件类型正确, 就调用我们的导入函数,将传入的文件转换为 供el-table使用的数组。

handleChange函数

handleChange(file) {
  		//file.raw就是我们的导入函数需要的参数
      this.fileTemp = file.raw;
      if (this.fileTemp) {
        if (
          this.fileTemp.type ==
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
          this.fileTemp.type == "application/vnd.ms-excel"
        ) {
          this.importfxx(this.fileTemp);
        } else {
          this.$message({
            type: "warning",
            message: "附件格式错误,请重新上传!",
          });
          this.handleRemove();
        }
      } else {
        this.$message({
          type: "warning",
          message: "请上传附件!",
        });
      }
    },

导入函数

importfxx(obj) {
      // 通过DOM取文件数据
      var rABS = false; //是否将文件读取为二进制字符串
      var f = obj;
      var reader = new FileReader();
      const self = this;
      FileReader.prototype.readAsBinaryString = function (f) {
        var binary = "";
        // var pt = this;
        var wb; //读取完成的数据
        var outdata;
        var reader = new FileReader();
        reader.onload = function (e) {
          console.log(e);
          var bytes = new Uint8Array(reader.result);
          var length = bytes.byteLength;
          for (var i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i]);
          }
          var XLSX = require("xlsx");
          wb = XLSX.read(binary, {
            type: "binary",
          });
           //outdata就是需要的那个数组
          outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
          self.excelData = [...outdata];
        };
        reader.readAsArrayBuffer(f);
      };
      if (rABS) {
        reader.readAsArrayBuffer(f);
      } else {
        reader.readAsBinaryString(f);
      }
    },

到这里,我们就可以拿到table需要的数组(每一行的数组),长这个样子:

在这里插入图片描述

定义colData,由colData去遍历产生对应的列

colData:

export const colData = [
  {
    prop:'Author',
    label:'作者'
  },
  {
    prop:'Date',
    label:'时间'
  },
  {
    prop:'Id',
    label:'序号'
  },
  {
    prop:'Readings',
    label:'阅读量'
  },
  {
    prop:'Title',
    label:'名称'
  }
]

到这里,我们就完成了,导入excel并将其显示在table中的任务。

导出excel

expor2Excel添加代码

//由于这几个文件不支持import引入,所以我们需要`script-loader`来将他们挂载到全局环境下
require('script-loader!file-saver');  //保存文件用
require('script-loader!./Blob');   //保存二进制文件用,直接写绝对路径
require('script-loader!xlsx/dist/xlsx.core.min');  //xlsx核心

导出函数

getExcel(arrData) {
      if (!arrData || !arrData.length) return;
      const self = this;
      require.ensure([], () => {
        //导入expor2Excel, 写绝对路径
        const { export_json_to_excel } = require("../excel/expor2Excal");
        const filterVal = self.colData.map((item) => item.prop);
        const tHeader = self.colData.map((item) => item.label);
        const json = self.excelData;
        const data = this.formatJson(filterVal, json);
        // console.log(data, "data");
        export_json_to_excel(tHeader, data, "excel表名");
      });
    },
      //保持输出顺序与表头一致
     formatJson(filterVal, jsonData) {
      return jsonData.map( v => filterVal.map( j => v[j]));
    },

好了,到此,我们的事情就做完了

实用前端技巧:轻松导出Excel通用方法(实现多级表头、表格合并、自定义样式) 阅读详情

相关推荐

vue-cli 导出excel

1.cd至项目目录 2.安装 npm install file-saver --save npm install xlsx --save npm install script-loader --save-dev 3.src目录下新建一个文件夹命名为vendor 4.Blob.js 和 Export2Excel.js文件放到vendor文件夹下(下面有Blob.js和Export2Exce...

_高飞_的博客 1292

vue中电子表格的导入导出

一、安装 npm install -S file-saver xlsx npm install -D script-loader 二、在src下新建vender文件夹,装Blob.js和 Export2Excel.js这两个文件 然后在index.js中导入 import Blob from './../../vender/Blob.js' import Export2Excel f...

WeiflR10的博客 832

vue+element-ui 前端导出excel表格功能

1、安装依赖插件 npm install -S file-saver xlsx npm install -D script-loader 2、导入两个JS 在src目录下新建excel文件夹,里面放入Blob.js和Export2Excel.js两个JS文件 下载Blob.js和Export2Excel.js 提取码: 6p7x 3、main.js 引入文件 import Blob from './excel/Blob' import Export2Excel from './excel/Export2

weixin_39177580的博客 2287

整理 javascript 表格导出excel文件遇到的多种情况的处理方法

javascript 处理多种表格的Excel导出方式 在这里请注意一点,这里交流的是一种处理问题的方法,而不是最终研究出的处理方式结果。 我们很多时候在遇到需要解决陌生领域问题的时候第一个想到的就是找插件,看论坛,找现成的方法,简单的问题一招一个准,但是一旦遇到复杂的问题,那真的是越找越痛苦,为了解决这种痛苦的问题,在此提供一个解决问题的思路。 以导出Excel为例 /* eslint-di...

qq_26934957的博客 930

springboot+vue+element ui(upload+download)实现excel上传及下载(附带通过网关、前端获取token封装和携带请求方式)

excel上传及下载vue、springboot 、javajava springboot + vue 文件上传与下载(element ui)上传前端 el-upload后端 接收流文件下载前端 类似于a标签后端 response响应 java springboot + vue 文件上传与下载(element ui) 网上很多关于文件上传和文件下载的,但是试了一下感觉很多都不能解决我的问题,这篇博...

qq_40146769的博客 2382

利用vue和element实现excel文件的读取、展示(分页展示)

直接上源码。 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8" /&gt; &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"

Handsome3618的博客 9077

SpringBoot+Vue工厂车间管理系统开发实战

工厂车间管理系统是制造业数字化转型的核心应用,基于SpringBoot+Vue的前后端分离架构已成为现代Web开发的标准范式。SpringBoot通过自动配置和起步依赖简化了Java后端开发,Vue.js则以其响应式特性提升前端开发效率。这种技术组合在企业级应用中展现出显著优势:SpringBoot的RESTful API提供稳定服务,Vue的组件化开发实现高效界面构建。在车间管理场景中,该架构能有效支撑设备监控、生产排程等关键功能,其中RBAC权限控制和WebSocket实时通信是典型技术亮点。本案例特别

weixin_30843121的博客 337

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 453

vue element-ui中的table表格数据 导出为excel文档

1.在src目录下创建excel目录 2.在excel目录下创建两个js文件,分别为Blob.js和Export2Excel.js 3.将下面的Blob.js代码导入你自己的Blob.js中 /* eslint-disable */ /* Blob.js`在这里插入代码片` * A Blob implementation. * 2014-05-27 * * By Eli Grey, http://eligrey.com * By Devin Samarin, https://github.co

GraySakura的博客 1198

27、自闭症儿童治疗与玩具设计研究

本研究探讨了自闭症儿童的治疗方法与玩具设计之间的关联,分析了游戏疗法、音乐疗法和职业疗法等在治疗中的应用,并介绍了多种针对自闭症儿童的治疗玩具案例。通过用户研究和多学科合作,提出了以Pro-Ability为核心的设计理念,开发了结合音乐疗法和精细运动训练的智能玩具套件。研究总结了当前成果与局限性,并展望了未来发展方向,旨在为自闭症儿童提供更有效的康复支持。

keras9composer的博客 210

华为OD机试 - 机器人活动区域(Java 双机位C卷 200分)

现有一个机器人,可放置于 M × N的网格中任意位置,每个网格包含一个非负整数编号。之后M行表示网格数值,每行N个数值(数值大小用k表示),数值间用单个空格分隔,行首行尾无多余空格。说明:图中绿色区域,相邻网格差值绝对值都小于等于1,且为最大区域,对应网格点数目为6。M、N、k均为整数,且1

学Java,找哪吒 916

elementui中有导出组件吗_vue + element-ui实现简洁的导入导出功能

前言众所周知,ElementUI,是一个比较完善的UI库,但是使用它需要有一点vue的基础。在开始本文的正文之前,我们先来看看安装的方法吧。安装ElementUI模块cnpm install element-ui -S在main.js中引入import ElementUI from 'element-ui'import 'element-ui/lib/theme-default/index.css...

weixin_35231383的博客 606

【人工智能-数据集】RML2018 时域信号的时序信号和星座图的图片信号生成方式(可用于多模态特征融合)

RML2018(RadioML 2018)数据集是一个广泛用于无线通信信号识别的开源数据集。它包含了多种调制方式(如OOK、QPSK、16QAM等)在不同信噪比下的信号样本。这些数据以 HDF5 格式存储,适用于大规模的数据处理和分析。数据集特点:多调制方式:涵盖24种不同的调制方式。多信噪比:包括从-20 dB到30 dB的26种信噪比。大规模样本:每种调制方式和信噪比下包含4096个样本。数据切分:将原始的 HDF5 数据集按照调制方式和信噪比切分成单个文件,便于后续处理。样本选择。

若北辰 971

elementui中有导出组件吗_vue+element-ui的简洁导入导出功能

1.前段后台管理系统中数据展示一般都是用表格,表格会涉及到导入和导出;原生js导出excel2.导入是利用element-ui的Upload 上传组件;<el-upload class="upload-demo":action="importUrl"//上传的路径:name ="name"//上传的文件字段名:headers="importHeaders"//请求头格式:on-preview...

weixin_42593130的博客 597

基于 STM32 的智慧农业温室控制系统设计与实现

本文提出一种基于 STM32 微控制器的智慧农业温室控制系统设计方案,通过集成多类型环境传感器、执行机构及无线通信模块,实现对温室内温湿度、光照、土壤湿度等参数的实时监测与自动调控。文中详细阐述硬件选型、电路连接及软件实现流程,并附关键代码示例,为智慧农业领域提供低成本、高可靠性的温室控制解决方案。

weixin_42300449的博客 1923

开尔文四线法与电桥(uΩ电阻检测)

本文介绍了开尔文四线法与电桥在电阻测量中的应用,特别是针对uΩ级别电阻的精确检测。讨论了基本电桥电路的工作原理,强调了开尔文四线法的优势,它能消除导线和接触电阻的影响。文中还提到了测试设备的介绍,包括不同级别的电阻测试,并详细阐述了uΩ级别电阻测试的步骤和注意事项。此外,对比了惠斯通电桥与开尔文电桥,强调了它们在电阻测量中的作用和计算方法。

让你爱上电路设计 7864

vue+element实现一个excel表格下载的功能

最近在使用vue-element-admin这个后台管理框架开源模板在做一个管理后台,使用起来其实还挺方便的,大部分的组件源码里面都已经写好了,用的时候只需要把源码拿出来修改修改,也就成了。 这里记录一下开发过程中遇到的一些功能。 资料相关 vue-element-admin 推荐指数:star:55k Github 地址:https://github.com/PanJiaChen/vue-el...

祈澈菇凉 3738

【RBF预测】基于粒子群算法优化RBF神经网络实现数据回归预测含Matlab源码

1 简介 原油含水率预测对于确定油井水,油层位以及估计原油产量有着非常重要意义.BP神经网络是最近常用的原油含水率预测方法,然而,由于BP神经网络存在容易陷入局部极小值,收敛速度慢等问题,影响了其预测的实用性和准确性,对此,提出基于粒子群优化RBF神经网络(PSO-RBFNN)的原油含水率预测方法,粒子群优化算法用于RBF神经网络参数优化.在分析原油含水率预测的影响因素基础上,建立粒子群优化RBF神经网络的原油含水率预测模型.实验结果表明,在原油含水率预测中,基于粒子群优化RBF神经网络比BP神经网络有着

qq_59747472的博客 1232

vue xlsx 导入导出_Vue框架下实现导入导出Excel、导出PDF

项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写、编辑和归档,经调研需支持如下功能:Excel报表的导入、导出PDF文件的导出打印表格经过技术选型,项目组一致决定通过表格组件SpreadJS来实现。以下是实现Excel报表的导入导出、PDF导出、打印表格的一些思路,供大家参考:环境介绍1.后台:Spring Boot 2.x2.前台:vue、vue-element、web...

weixin_39568597的博客 474

UGUI合批杀手:Mask/RectMask2D为何必断合批?

颜色缓冲负责记录像素颜色;模板缓冲负责记录“这个像素的模板值”(一个小整数);渲染时,你可以设定:只有模板值为 X 的地方才允许画;或者往某些区域写特定的模板值。类似于:先拿一支隐形笔在纸上画出一块区域,给它记一个编号“1”,后面的涂色动作只允许涂在“编号为1”的区域上。合批的前提:渲染状态不变,连续元素能一口气画完。材质、贴图、混合模式、Stencil、裁剪区域……都得一致。Mask / RectMask2D 的本质:在渲染状态上加规则——“只在某个区域内允许写像素”。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 119

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

vue2.0+Element-ui导出table为Excel

vue+element导出excel element导出表格为excel vue+element导出table

huanhuan03的博客 512

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue表单中批量导入功能_vue+element-ui的简洁导入导出功能【包含上传到云】

前言后台管理系统中数据展示一般都是用表格,表格会涉及到导入和导出;1.导入1.1 el-upload组件1.导入是利用element-ui的Upload 上传组件;:action="importUrl"//上传的路径:name ="name"//上传的文件字段名:headers="importHeaders"//请求头格式:on-preview="handlePreview"//可以通过 file...

weixin_39687542的博客 492

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Vue 中使用 Upload 组件上传 Excel

vue 中使用 Element 的 upload 组件上传 Excel,大致可以分两种情况 使用 action 上传到服务器 使用 axios 上传到服务器 注意:上传文件可能由于前后端格式不统一导致上传失败 application/x-www-form-urlencoded 一般情况下使用这个比较多 multipart/form-data application/json 使用 action 使用 action 时,首先会使用OPTIONS方法发起一个预检请求,从而获知服务器是否允许该跨域请求。服

雪急飞绪博客 9689

基于Vue2与Element UI的后台管理系统模板:从零搭建到功能集成

本文详细介绍了如何从零开始搭建基于Vue2与Element UI的后台管理系统模板,包括环境准备、项目初始化、基础布局搭建、核心功能模块实现以及高级功能集成。通过实战代码示例,帮助开发者快速掌握Vue2与Element UI的结合应用,提升后台管理系统开发效率。

weixin_33701294的博客 381

vue+element-ui上传文件

项目中使用到了,记录一下下面是HTML中使用el-upload,其中可以定义一些需要的属性或方法,使用可以参照element-ui官方手册上传的文件限制为Word,txt,Excel表格&lt;el-upload ref="upload" class="upload" :action="uploadUrl()" :on...

lx_1024的博客 1万+
上一篇: vue2.x el-table二次封装支持编辑修改
下一篇: javascript事件循环Event Loop,宏任务与微任务
Donmind29
博客等级 码龄7年 17粉丝 71原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值