Excel中行列范围的转换

这篇具有很好参考价值的文章主要介绍了Excel中行列范围的转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

这种写法转换成单元格地址的方法。文章来源地址https://www.toymoban.com/news/detail-738226.html

        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;
        }

到了这里,关于Excel中行列范围的转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python读取Excel指定范围并转为数组

            最近需要读取Excel中的内容,然后进行后续操作,对于这块知识,博主以前以为自己不会涉及到,但是现在一涉及到,第一步就错了,搞了好久。真的心累。因此写了这篇博客。  目的:excel中存放着数据,如果要进行计算及其它操作,首先就要进行读取。 目录 安装

    2023年04月12日
    浏览(44)
  • 掌握 Microsoft Excel 宏和 Excel VBA

    掌握 Microsoft Excel 宏和 Excel VBA 基于项目的 Excel VBA(Visual Basic for Applications)和 Excel 宏课程 课程英文名:Master Microsoft Excel Macros and Excel VBA 此视频教程共27.0小时,中英双语字幕,画质清晰无水印,源码附件全 课程编号:286 百度网盘地址:https://pan.baidu.com/s/1ivLIGKt_3R0wncmCswMTR

    2024年02月05日
    浏览(44)
  • Qt 调用 Microsoft Excel 组件生成 Excel 文档

    在.pro文件中添加模块: 参考界面:界面中只有一个 pushButton 按钮。 参考代码: mainwindow.h: mainwindow.cpp: 程序执行效果:会在桌面生成一个data.xlsx文档,打开此文档后显示如下信息: 注意:若你的电脑安装的是 WPS ,没有安装 Office,那么使用 WPS 中的 Excel 也是完全没问题的

    2024年02月15日
    浏览(48)
  • Python基于指定范围筛选并剔除Excel表格中的数据

      本文介绍基于 Python 语言,读取 Excel 表格文件,基于我们给定的规则,对其中的数据加以 筛选 ,将 不在指定数据范围内 的数据剔除,保留 符合我们需要 的数据的方法。   首先,我们来明确一下本文的具体需求。现有一个 Excel 表格文件(在本文中我们就以 .csv 格式

    2024年02月08日
    浏览(56)
  • c# 使用Microsoft.Office.Interop.Excel 对Excel操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 Microsoft.Office.Interop.Excel的读取,保存,内容写入和打印。 提示:以下是本篇文章正文内容,下面案例可供参考     首先于Proj

    2024年02月03日
    浏览(42)
  • Python自动计算Excel数据指定范围内的区间最大值

      本文介绍基于 Python 语言,基于 Excel 表格文件内某一列的数据,计算这一列数据在每一个 指定数量的行 的范围内(例如每一个 4 行的范围内)的 区间最大值 的方法。   已知我们现有一个 .csv 格式的 Excel 表格文件,其中有一列数据,我们希望对其加以 区间最大值 的

    2024年02月15日
    浏览(42)
  • pywintypes.com_error: (-2147352567, 发生例外狀況。‘, (0, ‘Microsoft Excel‘, ‘Microsoft Excel 不能访问文件

    最近需要使用win32COM操作excel 但发现excel SaveAs保存的时报错: pywintypes.com_error: (-2147352567, 发生例外狀況。\\\', (0, \\\'Microsoft Excel\\\', \\\'Microsoft Excel 不能访问文件 起初以为很简单,于是百度发现很多类似问题: 1. https://www.cnblogs.com/vhills/p/8098715.html 2.https://blog.csdn.net/PlusChang/article/details/729

    2024年02月03日
    浏览(46)
  • Microsoft Excel 教程:如何在 Excel 中将文本拆分为不同的列?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 中使用“文本分列向导 ”将文本拆分为不同的列。 使用「文本分列向导」,将一个或多个单元格中的文本拆分为多个。将数据拆分为不同的列,选择要拆分的单元格,单击「数据」-「分

    2024年02月15日
    浏览(43)
  • Microsoft Excel 直方图

    数据 - 数据分析 - 直方图 输入区域=样本值、接受区域=分类间距,输出选项选择“新工作表组”,勾选“图表输出”,点击确定 [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

    2024年01月18日
    浏览(41)
  • 关于使用Microsoft.Office.Interop.Excel.dll来读写Excel表格的问题

    小公司,使用打卡机进行考勤,输出的是一张Excel表格,每个月看到前台妹子都要辛辛苦苦地统计Excel表格每个员工迟到的时间,于是想着写一个自动计算迟到分钟的小程序。 参照这几篇比较好的文章按部就班地做:导出Excel文件 、其它方法。 没想到刚开始写就遇到一个大坑

    2024年02月16日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包