excel 公式中的简写转换、10 进制数字转换成序列号、字母转数字、常用正则表达式
1 // 处理简写形式 A1:A8 A1:D8,例如 A1:A8,会将A1:A8转换成 A1,A2,A3,A4,A5,A8 2 const checkShortCell = (cell)=>{ 3 let shortCells = [] 4 const [startRow,endRow] = cell.match(/\d+/g) //例如 [11,15] 5 const [startCol,endCol] = cell.match(/[A-Z]+/g) //例如 [A,A] 6 let startColChar = stringTonum(startCol) // 转数字 7 let endColChar = stringTonum(endCol) 8 let start = Number(startRow) 9 let end = Number(endRow) 10 for (let charIndex = startColChar; charIndex <= endColChar; charIndex++) { 11 let colChar = createCellPos(charIndex) // 转字母 12 for (let index = start; index <= end; index++) { 13 const cell = colChar + index 14 shortCells = [...shortCells,cell] 15 } 16 } 17 return shortCells.join(',') 18 } 19 // 把10进制数字转化成EXCEL列号 如 A == 0 、AA == 26 20 const createCellPos = (n) =>{ 21 var ordA = 'A'.charCodeAt(0); 22 var ordZ = 'Z'.charCodeAt(0); 23 var len = ordZ - ordA + 1; 24 var s = ""; 25 while( n >= 0 ) { 26 s = String.fromCharCode(n % len + ordA) + s; 27 n = Math.floor(n / len) - 1; 28 } 29 return s; 30 } 31 // EXCEL列号 字母转数字 32 function stringTonum(a) { 33 var str = a.toLowerCase().split(""); 34 var num = 0; 35 var al = str.length; 36 var getCharNumber = function (charx) { 37 return charx.charCodeAt() - 96; 38 }; 39 var numout = 0; 40 var charnum = 0; 41 for (var i = 0; i < al; i++) { 42 charnum = getCharNumber(str[i]); 43 numout += charnum * Math.pow(26, al - i - 1); 44 }; 45 return numout - 1; 46 }
常用正则表达式
- const MatchExcelFormulaReg = /^([A-Z]+\d+=)(?!(\'|\d))./g // 排除 数据报表模板公式中的 中文和数值,中文是以 ' 开头的
- const MatchCellReg = /[A-Z]+\d+/g // cell 例如 A1 AD1 A12
- const MatchComputeOperatorReg = /[\+\-\*\/]+/g // 算术运算符 + - * /
- const MatchRelativeOperatorReg = /[><≠\=≤≥]+/g // 关系运算符 >、<、=、≠、≤、≥
- const MatchFunctionNameReg = /(MIN|SUM)/g // 支持的函数表达式 MIN SUM
- const MatchSimpleStyleReg = /[A-Z]+\d+:{1}[A-Z]+\d+/g // 匹配 简写形式 例如 A11:A115
作者:胡倩倩0903
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
分类:
前端处理 excel
标签:
vue3.x
, 前端获取excel 公式
posted on 2022-07-04 17:03 kitty20180903suzhou 阅读(439) 评论(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