• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

我的博客我做主

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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
作者:kitty20180903suzhou
出处:https://www.cnblogs.com/kitty-blog/
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

posted on 2022-07-04 17:03  kitty20180903suzhou  阅读(490)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3