前言:

用到的库参考链接:

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数据并展示成表格的更多相关文章

  1. POI 导入excel数据自动封装成model对象--代码

    所有的代码如下: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; ...

  2. POI 导入excel数据自动封装成model对象--介绍

    1.项目开发中,导入输入应该是常用的基本功能.我们经常会使用excel将数据导入到数据库,在导入之前必须得将excel数据转换成javaBean对象 2.由于此功能经常使用,所以开发此工具类方便日后轻 ...

  3. POI 导入excel数据自动封装成model对象--代码分析

    上完代码后,对代码进行主要的分析: 1.主要使用反射api将数数据注入javabean对象 2.代码中的日志信息级别为debug级别 3.获取ExcelImport对象后需要调用init()方法初始化 ...

  4. 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

    1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...

  5. vue多个数据不一样的表格导出到同一张excel里面

    刚来公司第二天, 甩了个需求, 把两个不同表格的数据 导出到同一个excel中 ........额,好吧 你要说,两个表格数据差不多, 直接合并数据导出就行: async function getDa ...

  6. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  7. (转)PLSQL Developer导入Excel数据

    场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有 ...

  8. 【转】 如何导入excel数据到数据库,并解决导入时间格式问题

    在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...

  9. Oracle导入excel数据快速方法

    Oracle导入excel数据快速方法 使用PLSQL  Developer工具,这个可是大名鼎鼎的Oracle  DBA最常使用的工具.    在单个文件不大的情况下(少于100000行),并且目的 ...

  10. thinkphp整合系列之phpexcel导入excel数据

    一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...

随机推荐

  1. 关于QT编译程序找不到MSVCRT.DLL和其他动态链接库的解决办法

    先上图(一大堆无法解析的外部符号): 解决办法分两个步骤: 1.系统环境变量设置,把这些dll文件所在目录加入到PATH中.比如C:\Windows\SysWOW64, C:\Windows\Syst ...

  2. Chrome(谷歌)浏览器永久关闭恢复页面提示框(记录)

    使用脚本调用Chrome浏览器启动指定页面,然后代码里的命令关闭,会被浏览器识别为非正常关闭. 再次执行脚本的时候会停留在空白页面,无法进入指定页面,设置为主页也无法进入. 排查可能是浏览器自动恢复页 ...

  3. Cross Site Scripting DOM (XSS) 攻击jQuery append() 的处理方法

    做安全红线使用Fortify工具进行扫描时,jquery append会报Cross Site Scripting DOM风险.解决该问题有两种办法. 一.原生dom方式 使用JavaScript原生 ...

  4. java 通过反射以及MethodHandle执行泛型参数的静态方法

    开发过程中遇到一个不能直接调用泛型工具类的方法,因此需要通过反射来摆脱直接依赖. 被调用静态方法示例 public class test{ public static <T> T get( ...

  5. Jmeter之post上传文件(jmeter接口测试请求参数上传文件)

    一,上传excel等普通文件 接口测试时有接口文档的话,那就对着文档写,没api文档,就自己抓包看了. 接口文档 抓包查看 步骤一:接口请求切换至文件上传(Files Upload)栏 content ...

  6. TypeError: list indices must be integers or slices, not str解决方法

    print (response.json()['data']['patientId'])TypeError: list indices must be integers or slices, not ...

  7. selenium 模拟鼠标滚轮,滚动到可见的选项

    self.wrap_driver.move_to_element(locator=const_xpath.monitor_select) #鼠标移动到某个区域target = self.driver. ...

  8. POI给单元格添加超链接(xls,xlsx)

    package com.topcheer.html; import java.io.FileOutputStream; import java.io.IOException; import org.a ...

  9. CanvasScaler的三种适配模式——缩放模式(Scale with Screen Size)

    一.含义 根据屏幕尺寸进行缩放,随着屏幕尺寸进行放大缩小 二.参数介绍 第一个参数一般是美术人员根据游戏主要面向的手机市场,比如安卓市场,用市场上最常用的分辨率作为制作UI图片的标准.这里填的数就是美 ...

  10. sql函数的用法

    1.codename 作为翻译函数 CREATE DEFINER=`root`@`localhost` FUNCTION `codename`(`sys_code` varchar(20),`stat ...