vue导入Excel数据并展示成表格
前言:
用到的库参考链接:
FileReader:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader 这个在之前的下载excel的随笔中有用到
xlsx: https://www.npmjs.com/package/xlsx 本次用到读取excel数据插件,功能很强大,文档太大了,需要多琢磨
前端上传excel文件,读取Excel数据并展示成表格
通常情况下上传文件调用后台接口,接口返回改文件的数据,前端处理展示成表格,有些需求,例如,后台只需要表格需要的数据,上传过程后台不落库,并不提供接口,这是就需要我们自己上传文件读取到改文件的数据展示,并提交给后台
1.安装 file-saver 和 xlsx
1 npm install file-saver xlsx
2.main.js中引入依赖
1 import XLSX from 'xlsx'
2 Vue.use(XLSX)
3.用到elementUI的upload上传控件,设置action, http-request等标签属性,由于不需要直接发请求上传到服务器,暂不这是action属性,不需要考虑跨域问题
“httpRequest”是自定义上传方法,用来处理文件中的数据,上传过程会触发改方法
1 <el-upload
2 class="upload-excel"
3 action=""
4 drag
5 :http-request="httpRequest"
6 accept="csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
7 <i class="el-icon-upload"></i>
8 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
9 </el-upload>
4.上传方法
1 httpRequest(e) {
2 var _this = this;
3 var rABS = false; //是否将文件读取为二进制字符串
4 let f = e.file // 文件信息
5 if(!f) return false;
6 else if(!/\.(xls|xlsx)$/.test(f.name.toLowerCase())) {
7 this.$message.error('上传格式不正确,请上传xls或者xlsx格式')
8 return false
9 }
10
11 var reader = new FileReader();
12 FileReader.prototype.readAsBinaryString = function(f) {
13 var binary = "";
14 var rABS = false; //是否将文件读取为二进制字符串
15 var wb; //读取完成的数据
16 var outdata;
17 var reader = new FileReader();
18 reader.onload = function(e) {
19 var bytes = new Uint8Array(reader.result);
20 var length = bytes.byteLength;
21 for(var i = 0; i < length; i++) binary += String.fromCharCode(bytes[i]);
22 var XLSX = require('xlsx');
23 if(rABS) wb = XLSX.read(btoa(fixdata(binary)), {type: 'base64'}); //手动转化
24 else wb = XLSX.read(binary, { type: 'binary' }); // 这里能获取到所有的数据
25 outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {defval: ''}); //outdata的格式可打印了自行查看,注意这里只取到了第一个sheet的数据
26 // 以下是对outdata的格式化,可按个人需要自行转换
27 outdata.map((p, idx)=> {
28 // ...
29 })
30 }
31 reader.readAsArrayBuffer(f);
32 }
33 if(rABS) reader.readAsArrayBuffer(f);
34 else reader.readAsBinaryString(f);
35 },
代码第24行中,变量wb的数据是所有的数据
vue导入Excel数据并展示成表格的更多相关文章
- POI 导入excel数据自动封装成model对象--代码
所有的代码如下: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; ...
- POI 导入excel数据自动封装成model对象--介绍
1.项目开发中,导入输入应该是常用的基本功能.我们经常会使用excel将数据导入到数据库,在导入之前必须得将excel数据转换成javaBean对象 2.由于此功能经常使用,所以开发此工具类方便日后轻 ...
- POI 导入excel数据自动封装成model对象--代码分析
上完代码后,对代码进行主要的分析: 1.主要使用反射api将数数据注入javabean对象 2.代码中的日志信息级别为debug级别 3.获取ExcelImport对象后需要调用init()方法初始化 ...
- 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程
1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...
- vue多个数据不一样的表格导出到同一张excel里面
刚来公司第二天, 甩了个需求, 把两个不同表格的数据 导出到同一个excel中 ........额,好吧 你要说,两个表格数据差不多, 直接合并数据导出就行: async function getDa ...
- 基于 Aspose.Cells与XML导入excel 数据----操作类封装
前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...
- (转)PLSQL Developer导入Excel数据
场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有 ...
- 【转】 如何导入excel数据到数据库,并解决导入时间格式问题
在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...
- Oracle导入excel数据快速方法
Oracle导入excel数据快速方法 使用PLSQL Developer工具,这个可是大名鼎鼎的Oracle DBA最常使用的工具. 在单个文件不大的情况下(少于100000行),并且目的 ...
- thinkphp整合系列之phpexcel导入excel数据
一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...
随机推荐
- 利用fread读取二进制文件的bug
最近在做一个项目时需要读取二进制文件,我用C语言的fread进行读取,代码如下: FILE *fp; int read_data; fopen_s(&fp, file_path, " ...
- 关于QT编译程序找不到MSVCRT.DLL和其他动态链接库的解决办法
先上图(一大堆无法解析的外部符号): 解决办法分两个步骤: 1.系统环境变量设置,把这些dll文件所在目录加入到PATH中.比如C:\Windows\SysWOW64, C:\Windows\Syst ...
- C/C++ 数据结构单链表的实现(初始化、插入、删除、销毁)
#include <iostream> #include <Windows.h> #define MAX_SIZE 100 using namespace std; //单链表 ...
- virsh虚拟机使用网桥来实现上网
使用virsh-install安装虚拟机后,虚拟机不可以上网 第一步:主机上配置网桥 cp ifcfg-eno16777736 /tmp/ cp ifcfg-eno16777736 ifcfg ...
- What Are You Weighting For?
A basic strength routine can change your life Strength training isn't just about getting six-pack ab ...
- c++中文编码格式
c++程序中涉及到中文字符的输入输出以及其他操作经常会出现乱码.乱码主要是由于程序的源文件编码.可执行文件编码以及程序运行环境的编码不匹配导致.比如,c++源程序文件编码为GB18030, 在源程序中 ...
- AttributeError: module 'torch._six' has no attribute 'PY3'
修改:进到torch._six源码,看看里面是PY的哪个对象,修改成这对象名试试 _six.py 即将PY3修改为PY37
- 一文快速回顾 Servlet、Filter、Listener
什么是Servlet? 前置知识: Web 服务器:可以指硬件上的,也可以指软件上的.从硬件的角度来说, Web 服务器指的就是一台存储了网络服务软件的计算机:从软件的角度来说, Web 服务器指的是 ...
- Redis6.0.9集群搭建
前提条件: Redis版本:6.0.9(因为5.0之前创建用的是redis-trib,还需要ruby,ruby-gem) 安装环境: Centos7 1. 准备配置文件 一个是通用文件:redis-c ...
- RealWorldCTF渗透赛第二期复现-ctfshow
比赛概述 开始时间:2023年3月10日15时 环境保留时间:72小时 环境重置时间:20分钟 官方wp链接:Docs (feishu.cn) [本次复现跟着官方WP进行,只做记录学习之用] 0x1 ...