vue3.x 中使用 XLSX 提取 excel 工作表中的公式
最近在做关于Excel 导入的项目,后端太忙了,前端先处理excel公式,我使用 XLSX 这个npm 包来处理,希望是个不错的选择!
第一步 安装 npm install XLSX 或者 yarn add XLSX , 我使用的是后者!
第二步 写好上传 的按钮 ,这里使用的是element-ui plus 的组件 el-upload,代码如下:
1 <el-upload 2 action="" 3 :auto-upload="true" 4 :before-upload="readExportExcelFile"
5 > 6 <el-button type="primary">上传报表模板</el-button> 7 </el-upload>
第三步:实现 readExportExcelFile 方法:
// 点击导入excel, 获取excel的表(sheet ) const readExportExcelFile = (file)=>{ /* 读取Excel */ const reader = new FileReader(); reader.onloadstart = (e)=>{ loading.value = e.target.readyState } reader.onprogress = (e)=>{ loading.value = e.target.readyState } reader.onload = (e) => { /* 解析数据 */ const bstr = e.target.result; workbook.value = XLSX.read(bstr, { type: 'binary'}); // 缓存 excel 解析内容 sheets.value = workbook.value.SheetNames; // 获取 缓存 excel 中所有表 (sheet ) proxy.$modal.msgSuccess("导入成功!") } reader.onloadend = (e)=>{ loading.value = e.target.readyState } reader.onerror = (e) =>{ proxy.$modal.msgError("文件读取时发生错误!") } reader.readAsBinaryString(file); return false; }
就这样,就成功拿到了excel 表中拿到workbook 和 sheets 数据啦!
第四部 获取 某个sheet 中的公式 wsname 参数表示sheet 名称
XLSX.utils.sheet_to_formulae 提取公式
MatchExcelFormulaReg 正在表达式过滤出有效的公式
1 const MatchExcelFormulaReg = /^([A-Z]+\d+=)(?!(\'|\d))./g // 排除 数据报表模板公式中的 中文和数值,中文是以 ' 开头的 2 // 选择某个表(sheet ),获取表中公式(formulae) 3 const getFormulae = (wsname)=>{ 4 if(workbook.value){ 5 const ws = workbook.value.Sheets[wsname]; 6 let sheetToFormulae = XLSX.utils.sheet_to_formulae(ws) // 提取公式 7 const formulae = sheetToFormulae.filter(z=>z.match(MatchExcelFormulaReg)) // 过滤出需要的公式,例如:A3=A1+A2 8 return formulae 9 } 10 }
这样提取公式的目的就达到了!
在这个功能开发过程中经常需要用到正则!我也因此不得不学会写一些正则,有收获!
作者:胡倩倩0903
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
分类:
前端处理 excel
标签:
前端提取 excel 公式
posted on 2022-07-04 17:03 kitty20180903suzhou 阅读(1058) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY