位置: IT常识 - 正文

前端使用xlsx插件读取excel文件数据(保姆级教程)(前端从后端拿excel文件)

编辑:rootadmin
前端使用xlsx插件读取excel文件数据(保姆级教程)

推荐整理分享前端使用xlsx插件读取excel文件数据(保姆级教程)(前端从后端拿excel文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端 excel,前端操作excel,前端 excel,前端导入excel文件,前端表格插件哪个好,前端导入excel文件,ext前端,前端展示excel数据,内容如对您有帮助,希望把文章链接给更多的朋友!

本人属于一个实习菜鸟,大神请谨慎阅读............

      在开发过程中,难免会碰到用前端来处理excel文件的需求,我们需要解析出excel文件的内容然后在以对象的形式展示或者与后端对接

功能的实现思路:

     文件选择   =>  FileReader对象得到二进制数据  =>  XLSX处理二进制数据 => 得到数据

1.导入按钮的样式与事件(element ui)

        首先我们需要的是一个导入的按钮但是我们导入按钮并不好处理触发选择文件(file)的change事件所以我们可以用定位来解决这个问题,原理就是:选择文件按钮(file)覆盖在正常按钮上面然后在把选择文件按钮(file)透明的变为0即可

<el-button size="mini" type="success" style="margin-top: 10px" :disabled="disabled"class="el-dialog-position"> <span v-if="importStatus === false"> 导入<i class="el-icon-upload el-icon--right" /> <input ref="files" type="file" v-if="!disabled" class="excelFile" @change="excelFileMethod" /> </span> <span v-if="importStatus === true"> 导入中<i class="el-icon-loading el-icon--right" /> </span></el-button>

        接下来就是chnage事件了,当用户更改 input、select 和textarea元素的值时,change 事件在这些元素上触发。和 input 事件不同的是,并不是每次元素的 value 改变时都会触发 change 事件。我们选择文件并确认以后得到了下面着一些大堆数据

这一大堆的数据我们不用管,我们只关注target对象里面的files对象就可以了因为等一下我们需要用到,但是注意这里的只是文件的信息并不是数据更不是二进制文件!!!!!!

2.对得到的文件信息进行处理(fileReader的使用)

        先对fileReader做个介绍,FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。(官网原文)这里给你们个地址自己去看属性和方法的使用我就不做过多的介绍了.........先看代码:

// change事件excelFileMethod(e) { var _this = this// excel文件信息const files = e.target.filesconsole.log(files);// 构建fileReader对象const fileReader = new FileReader()// 读取操作完成时fileReader.onload = function(e) {try {// 二进制数据console.log(e.target.result)} catch (e) {console.log('文件类型不正确')return}}// 读取指定文件内容fileReader.readAsBinaryString(files[0])}第一步我们需要构建一个新的FileReader对象第二步使用FileReader.readAsBinaryString()读取指定的Blob中的内容。一旦完成,result属性中将包含所读取文件的原始二进制数据。第三步就是FileReader.onLoad该事件在读取操作完成时触发。3.对得到的二进制数据进行处理(XLSX插件的使用)

        XLSX插件的使用,使用前我们需要下载并CND使用也可以是npm安装看个人需求,我这里是vue项目所以就是npm安装了然后还需要我们引入XLSX,方法如下:

import XLSX from 'xlsx'

前端使用xlsx插件读取excel文件数据(保姆级教程)(前端从后端拿excel文件)

通过上面的代码我们已经得到了二进制数据了,我们就开始对二进制数据进行解析吧!使用XLSX.read(data, { type: type})方法来实现,type主要取值如下:

base64:以base64方式读取binary:BinaryString格式( byte n is data.charCodeAt(n) )string:UTF8编码的字符串buffer:nodejs Bufferarray:Uint8Array,8位无符号数组file:文件的路径(仅nodejs下支持)

这个方法返回一个workBook对象,对象的内容如下:

可以看到workBook对象,sheetNames里面保存了所有的sheet名字,然后Sheets则保存了每个sheet的具体内容(我们称之为Sheet Object)。每一个sheet是通过类似A1这样的键值保存每个单元格的内容,我们称之为单元格对象(Cell Object)

解析workBook对象的方法XLSX.utils.sheet_to_csv:生成CSV格式XLSX.utils.sheet_to_txt:生成纯文本格式XLSX.utils.sheet_to_html:生成HTML格式XLSX.utils.sheet_to_json:输出JSON格式

这里用到的是XLSX.utils.sheet_to_json所以我着重介绍,XLSX.utils.sheet_to_json(data, type)有两个参数,第一个是我们wordBook对象里面Sheets对象对应的数据,第二个参数配置如下:

raw: 使用原始值 (true) 或格式化字符串 (false)  (默认值:true)dateNF: 在字符串输出中使用指定的日期格式(默认值:FMT 14)defval: 使用指定值代替 null 或 undefined ()blankrows: 在输出中包含空行**(默认值:** )

range: 

        (number)使用工作表范围,但将起始行设置为值

        (String)使用指定范围(A1 样式的有界范围字符串

        (default)使用工作表范围 ( worksheet[‘!ref’])

header:

        1: 生成数组数组(“二维数组”)

        "A".行对象键是文字列标签

        array of strings: 使用指定的字符串作为行对象中的键

        (default): 将第一行作为键读取并消除歧义

下面就是整个导入excel文件并读取数据的代码流程了,我们可以对得到的数据作为参数与后端接口进行对接就可以了!

// 处理excel文件excelFileMethod(e) { // 导入状态和文件信息 var _this = this _this.importStatus = true const excelFile = e.target.files // 构建fileReader对象 const fileReader = new FileReader() // 该事件为读取完成时触发 fileReader.onload = function (ev) { try { const data = ev.target.result const workbook = XLSX.read(data, {type: 'binary'}) const list = '' const listNew = list.concat(XLSX.utils.sheet_to_json(workbook.Sheets['sheets1'], {header: 1})) _this.excelData.list = listNew.slice(6).split(',') // 得到的数据发送axios请求 importExcel(_this.excelData).then(res => { console.log(res) _this.importStatus = false if (res.code === 200) { _this.$alert(res.data.msg, '导入成功', { confirmButtonText: '确定', callback: () => { // 确认后做什么 } }) } else { _this.$alert(res.data.msg, '导入失败', { confirmButtonText: '确定', callback: () => { // 确认后做什么 } }) } }) } catch (e) { _this.$message({message: '文件类型不正确', type: 'warning'}) } } // 读取数据 fileReader.readAsBinaryString(excelFile[0])}

后续还会持续更新技术问题感兴趣的小伙伴可以点关注或者是私信我哦!!!

本文链接地址:https://www.jiuchutong.com/zhishi/299797.html 转载请保留说明!

上一篇:【NLP屠夫系列】- NER之实战BILSTM(网络用语屠夫)

下一篇:html常用font-family设置字体样式(HTML常用的表单控件有哪些)

  • 视频号直播上网课怎么投屏(视频号 开直播)

    视频号直播上网课怎么投屏(视频号 开直播)

  • 微信好友怎么置顶(微信好友怎么置底部显示)

    微信好友怎么置顶(微信好友怎么置底部显示)

  • 电脑右边键盘0到9数字打不上(电脑右边键盘0到9数字打不上nunlock也没用)

    电脑右边键盘0到9数字打不上(电脑右边键盘0到9数字打不上nunlock也没用)

  • 华为笔记本投屏怎么设置(华为笔记本投屏快捷键)

    华为笔记本投屏怎么设置(华为笔记本投屏快捷键)

  • 苹果11pro的充电器可以充苹果11吗(苹果11pro的充电线是什么接口)

    苹果11pro的充电器可以充苹果11吗(苹果11pro的充电线是什么接口)

  • qq答题在哪里(qq答题攻略)

    qq答题在哪里(qq答题攻略)

  • 抖音的收藏功能是隐私的吗(抖音的收藏功能怎么打开)

    抖音的收藏功能是隐私的吗(抖音的收藏功能怎么打开)

  • 微信怎么下载表情包到手机(微信怎么下载表情包图片 搞笑图片)

    微信怎么下载表情包到手机(微信怎么下载表情包图片 搞笑图片)

  • 指针和数组的区别(指针和数组的区别在哪)

    指针和数组的区别(指针和数组的区别在哪)

  • 通常把计算机网络定义为(通常把计算机网络的发展归纳为( )个阶段?)

    通常把计算机网络定义为(通常把计算机网络的发展归纳为( )个阶段?)

  • 手机短信字变大了怎么弄回原来(手机短信字变大了)

    手机短信字变大了怎么弄回原来(手机短信字变大了)

  • 抖音直播违规行为有哪些(抖音直播间违规行为)

    抖音直播违规行为有哪些(抖音直播间违规行为)

  • 苹果电脑可以使用wps吗(苹果电脑可以使用野狐围棋吗)

    苹果电脑可以使用wps吗(苹果电脑可以使用野狐围棋吗)

  • 大王卡欠费不用了,没注销会增加欠费吗(大王卡欠费不用了,去销号要交多少钱)

    大王卡欠费不用了,没注销会增加欠费吗(大王卡欠费不用了,去销号要交多少钱)

  • 爱奇艺弹幕字体颜色(爱奇艺弹幕字体跟随系统)

    爱奇艺弹幕字体颜色(爱奇艺弹幕字体跟随系统)

  • 趣键盘打字不出表情包(键盘输入法不出来字怎么调出来)

    趣键盘打字不出表情包(键盘输入法不出来字怎么调出来)

  • 华为荣耀9x是快充吗(荣耀9x是快速充电吗)

    华为荣耀9x是快充吗(荣耀9x是快速充电吗)

  • 微信怎么多处登录(微信怎么多登录帐号)

    微信怎么多处登录(微信怎么多登录帐号)

  • 怎么让悬浮窗显示短信(教你设置悬浮窗)

    怎么让悬浮窗显示短信(教你设置悬浮窗)

  • 华为noto3可以防水么(华为nova3e防触摸怎么关闭)

    华为noto3可以防水么(华为nova3e防触摸怎么关闭)

  • 喜马拉雅会员可以几个人用(喜马拉雅会员可以免费听所有小说吗)

    喜马拉雅会员可以几个人用(喜马拉雅会员可以免费听所有小说吗)

  • 电子邮箱怎么看(电子邮箱怎么看密码)

    电子邮箱怎么看(电子邮箱怎么看密码)

  • 电量显示怎么设置(电量显示怎么设置在桌面上)

    电量显示怎么设置(电量显示怎么设置在桌面上)

  • 出生日期格式(出生日期格式转换)

    出生日期格式(出生日期格式转换)

  • OpenCV画框函数rectangle的使用(opencv 方框识别)

    OpenCV画框函数rectangle的使用(opencv 方框识别)

  • 政府收回土地补偿款是否缴纳土地增值税
  • 消费税的计算方法有哪三种
  • 资本公积转增资本的要求
  • 销售部门领用材料用于销售计入
  • 小规模纳税人的起征点是多少
  • 有形资产负债率和有形净值负债率
  • 卫生清理费计入什么科目
  • 领料投入生产会计分录
  • 应收账款计提坏账比例
  • 费用退回怎么做账
  • 工商不变新股东是什么
  • 进口货物的代理报关服务费计入
  • 退货重新下单要付款吗
  • 收到招聘通知
  • 多转出的进项税能否转回
  • 委托代理合同后果的承担
  • 房地产母公司将其土地变更到其全资子公司
  • 逾期增值税扣税凭证抵扣问题
  • 认证后的发票可以留存多久
  • 外包物流适用范围
  • 建筑劳务公司的会计账务处理
  • 建筑行业项目部会计要做什么
  • 电子专用发票没有发票代码
  • 预付账款是企业销售过程中形成的一种非货币形式的债权
  • win10系统白名单怎么设置
  • 外贸公司付款方式有几种
  • 什么是所得税收入
  • 其他应付款结转什么科目
  • 进程aissca.exe
  • 残疾人就业保障金有什么好处
  • 公路客运车辆
  • 阿尔比恩洞的级别
  • 职工福利费的开支范围有哪些
  • vue组件引入外部js
  • 睡在海面上
  • Sklearn GridSearchCV跑SVM很慢或卡死解决办法,SVM线性核函数卡死
  • tomcat服务器在哪个位置
  • 小企业会计准则没有以前年度损益调整科目
  • 因质量问题对方直接扣款怎么处理
  • 公司股东利润分配方案范本
  • 一般纳税人专票认证抵扣流程
  • 其他收益算主营业务收入吗
  • 税务异常怎么处理要多长时间
  • 个体户查账征收和核定征收哪个好
  • 行政单位无偿划拨资产账务处理
  • 国外佣金代扣代缴增值税可以抵扣吗
  • 补计提所得税怎么做分录
  • 个体工商户生产经营所得税优惠政策
  • 收到公司的钱写收据
  • 社保公积金怎么取出来
  • 退回投标保证金在投诉阶段怎么办
  • 权益净利率如何分析
  • 暂估固定资产的账务处理
  • 固定资产是每月折旧吗
  • 公交车ic卡网上充值
  • 账簿设计要以()为前提
  • 商品型企业
  • CREATE FUNCTION sqlserver用户定义函数
  • sql server字段
  • mac上itunes
  • macbook imessage
  • gnaupdaemon.exe是什么
  • kpg是什么文件
  • Win7系统电脑开机无法进入桌面
  • js设计模式有什么用
  • ubuntu用root运行
  • shell中遍历数组
  • dosbox终止程序
  • cocos2dx4.0入门
  • centos ohmyzsh
  • easyui导出excel表格
  • node.js怎么创建js文件
  • unity随机生成一个物体
  • unity5.4.0
  • JavaScript中的数据类型分为两大类
  • 使用筷子就餐会不会传染乙肝病毒
  • 进口汽车增值税怎么算
  • 购买材料如何计入成本
  • 建筑企业个人所得税管理办法
  • 新版电子发票怎么看发票代码图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设