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 ...
随机推荐
- Mxgraph
1. Hello World! Creating an HTML page that links the mxGraph client JavaScript, Creating a container ...
- revit添加扩展组件
revit 添加组件方法: 查找本地这个地址: C:\Users\用户名\AppData\Roaming\Autodesk\Revit\Addins\2018 下载网上找到的插件,一般从github查 ...
- openssl 全面支持国密SM2/SM3/SM4加密算法
sm4展示 代码 /** 文件名: https://github.com/liuqun/openssl-sm4-demo/blob/cmake/src/main.c */ #include <s ...
- java_day23~24
Java基础 GUI编程 核心技术:Swing.AWT 现在GUI并不流行 因为其界面不美观.需要依赖jre环境 Swing public class Demo1 { //init();初始化 pub ...
- qemu4.0+libvirt5.6.0编译使用
1. qemu4.0.0 apt install pythonapt install libpixman-1-dev./configure --prefix=/usrmakemake install ...
- VSCODE C# 运行 找不到任务"BUILD"----C#常用命令
使用 Visual Studio Code 创建 .NET 类库 - .NET | Microsoft Docs 安装vscode.vscode c#相关拓展.MINIGW64 1.创建文件夹 2.用 ...
- python requests 上传文件_python3使用requests上传文件,content-type踩的坑
通常提交普通表单时,requests的post方法可以指定headers,所以我在使用requests模拟上传文件行为时,直接按照下面的方式写了: 然后服务器就报出了找不到分隔符Invalid mul ...
- spring-boot-starter-webflux
webflux: 反应式编程reactor的产物,采用发布订阅模式,引入netty的nio,比较适合IO密集型应用. 因普遍应用使用的DB链接是IO阻塞型,因此在一般应用中无法体现它的优势.redis ...
- IDEA如何使用Maven不通过模板创建javaWeb项目
IDEA如何使用Maven不通过模板创建javaWeb项目 1.创建项目 进入IDEA,点击"项目">"新建项目",填写项目信息,最后点击"创建 ...
- 学会规则引擎Drools,让你早点下班
前言 现在有这么个需求,网上购物,需要根据不同的规则计算商品折扣,比如VIP客户增加5%的折扣,购买金额超过1000元的增加10%的折扣等,而且这些规则可能随时发生变化,甚至增加新的规则.面对这个需求 ...