当前位置: 首页 > news >正文

Excel中行列范围的转换

将 行:1,4-5,8,11 列:a,c-e,f

这种写法转换成单元格地址的方法。

        public static Tuple<List<int>, List<string>> ConvertRowColumn(string rowRep, string colRep){List<int> rowIdxs = new List<int>();rowRep = rowRep.Replace(" ", "");colRep = colRep.Replace(" ", "");foreach (string item in rowRep.Split(',')){Match singleValM = Regex.Match(item, @"^(\d+)$");Match rangeValM = Regex.Match(item, @"^(\d+)-(\d+)$");if (singleValM.Success){int rowIdx = int.Parse(singleValM.Groups[1].Value);rowIdxs.Add(rowIdx);}else if (rangeValM.Success){int a = int.Parse(rangeValM.Groups[1].Value);int b = int.Parse(rangeValM.Groups[2].Value);int start = Math.Min(a, b);int end = Math.Max(a, b);for (int i = start; i <= end; i++){rowIdxs.Add(i);}}else{//报错,不能识别}}List<int> colIdxs = new List<int>();foreach (string item in colRep.Split(',')){Match singleValM = Regex.Match(item, @"^([a-z]+)$", RegexOptions.IgnoreCase);Match rangeValM = Regex.Match(item, @"^([a-z]+)-([a-z]+)$", RegexOptions.IgnoreCase);if (singleValM.Success){int colIdx = ColumnTitleToNumber(singleValM.Groups[1].Value);colIdxs.Add(colIdx);}else if (rangeValM.Success){int a = ColumnTitleToNumber(rangeValM.Groups[1].Value);int b = ColumnTitleToNumber(rangeValM.Groups[2].Value);int start = Math.Min(a, b);int end = Math.Max(a, b);for (int i = start; i <= end; i++){colIdxs.Add(i);}}else{//报错,不能识别}}rowIdxs.Sort();colIdxs.Sort();List<string> colTitles = new List<string>();foreach (int colIdx in colIdxs){colTitles.Add(ColumnNumberToTitle(colIdx));}Tuple<List<int>, List<string>> rowsCols = new Tuple<List<int>, List<string>>(rowIdxs, colTitles);return rowsCols;}private static int ColumnTitleToNumber(string columnTitle){columnTitle = columnTitle.ToUpper();int result = 0;for (int i = 0; i < columnTitle.Length; i++){result *= 26;result += columnTitle[i] - 'A' + 1;}return result;}private static string ColumnNumberToTitle(int columnNumber){string result = "";while (columnNumber > 0){int remainder = (columnNumber - 1) % 26;result = (char)(remainder + 'A') + result;columnNumber = (columnNumber - 1) / 26;}return result;}

http://www.lryc.cn/news/214848.html

相关文章:

  • golang的类型断言
  • 监听dom变化,监听dom属性变化
  • mfc140u.dll丢失怎么修复,mfc140u.dll文件有什么作用
  • 关于MySql update语句不能用子查询的解决办法
  • 【WinForm】WinForm程序C#分屏显示
  • 云安全—K8S API Server 未授权访问
  • nodejs+vue啄木鸟便民维修网站设计与实现-计算机毕业设计python-django-php
  • 【数据结构】树形结构所有路径复原为链表
  • linux杀毒软件下载、安装(在线安装、离线安装)
  • 系列五、映射文件xxxMapper.xml
  • 【缓存】Spring全家桶中@CacheEvict无效情况共有以下几种
  • P9117 [春季测试 2023] 涂色游戏
  • react如何进行项目配置代理
  • 2023杭州.云栖大会:计算,为了无法计算的价值
  • MIT6.5830 Lab1-GoDB实验记录(二)
  • 设计模式—创建型模式之工厂模式
  • N.B.缩略语的意思
  • SpringBoot源码透彻解析—自动装配
  • 基于springboot实现疫情防控期间外出务工人员信息管理系统项目【项目源码+论文说明】
  • 自动曝光算法(第一讲)
  • QStandardItemModel,setData和setItem区别
  • 应用出海新福祉,融云助IM社交迅速对齐海外用户体验
  • 64T存储松下mov和索尼mp4文件变0字节恢复案例
  • 【C/C++】 常量指针、指针常量、指向常量的常指针
  • 容斥原理,多步容斥
  • vue(32) : win10创建vue2基础前端框架
  • 如何制作一款资源网站app
  • 解决在Win7下运行一些老游戏花屏或色彩异常问题的方法
  • 使用vue3+vite+elctron构建小项目介绍Electron进程间通信
  • 家政APP开发服务同城预约维修接单管理系统软件小程序