Excel行列数字字母转换实现

背景:

Excel的列索引使用的是字母索引,某些开发中需要我们自己转换为数字,或者将数字转换为字母,比如基于Excel的公式,用户经常输入A1来表示引用Cell(0,0)的值。这时候我们需要把A转换为数字索引号;在显示的时候我们需要把0,0这样的坐标转换为A1显示,就需要把数字索引转换为字母索引。比如下面是LZ正做的一个项目,用到的:

废话不多说,直接看实现,下面是基于JavaScript的实现(转换为Java语言很容易),算法不做描述了,其实就是一个26进制的转换,可以参考16进制转换算法。

字母转换为数字:

/**
 * 字母转换为数字
 * @param {String} str
 */
function str2Num(str) {
        var base = 'A'.charCodeAt(0);//找到A的码表大小
	var r = 0;
	for (var i = 0; i < str.length; i++) {//遍历每个位置
	<span style="white-space:pre">	</span>r = r * 26 + str.charCodeAt(i) - base + 1;
	}
	return r - 1;
};

       上面算法不难理解,只要学过数据结构、算法的应该都知道那个“输入m输出m个1”二者类似,以此遍历每个位置,然后乘以该位置的基数即可。

数字转换为字母:

/**
* 将数字索引转换为英文字母
* @param {Number} colIndex
*/
function num2Str(colIndex) {
        colIndex += 1;
	if (colIndex <= 0) {
	      return "";
	}
	var str = "";
	var result = "";
	var A = 'A';
	while (colIndex != 0) {
	<span style="white-space:pre">	</span>var num = colIndex % 26; // 取最后一位
		var c = A.charCodeAt(0) + num - 1;
		colIndex = Math.floor(colIndex / 26); //返回值小于等于其数值参数的最大整数值。
		// 对于26的特殊处理
		if (num == 0) {
		        //c = A.charCodeAt(0) + 26;
			str = 'Z';
			colIndex -= 1; //退位
		} else {
			str = String.fromCharCode(c);
		}
		// 3.插入
		result += str;
	}
	if (result.length > 1) {
	      result = result.split('').reverse().join("");
	}
	return result;
};

         数字转换为字母的算法类似10进制转换为16进制,其实就是其余。

下面是基于上面的Web小工具,用于行里字母数字索引转换,源码就不贴出来了,核心的都在上面,就是简单的包装了下,直接下载即可。

时间: 2024-08-05 09:30:31

Excel行列数字字母转换实现的相关文章

华为上机测试题(Excel表格纵列字母数字转换-java)

PS:这是我刚做的一道题,题目不难,满分60,得分40,大家看看哪里有问题,欢迎提意见,感谢! /* * 题目:Excel表格纵列字母数字转换 * 描述: 在Excel中列的编号为A-Z,AA-AZ,BA-BZ.....CZB.....,请实现一个函数要求满足以下功能,将编号进行修改, * 如A-Z为1-26,然后翻转为两位,AA为27,AB为28.....ZZ为702,然后翻转为3位,AAA=703,AAB=704... 输入的字符串最长只有4. 题目类别: 字符串 难度: 初级 分数: 60

C#字母转换成数字/数字转换成字母 - ASCII码转换

字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.ToString(asciicode); //将转换一的ASCII码转换成string型 数字转换成字母byte[] array = new byte[1];ar

EXCEL 数字统一转换成文本

将excel中的数字统一转换成文本形式.即添加‘. 1.点击数据-分列. 2.分隔符号-下一步. 3.选择文本识别符号,如“‘”分号. 4. 选中文本-完成.

excel 行列转换

excel 行列互换 CreateTime--2018年5月29日08:24:48 Author:Marydon 1.列转行 第一步:在第一行插入空行 鼠标移至第一行最左侧-->鼠标样式会变成一个向右指示的图标→-->点击即可选中该行 -->右键-->插入 第二步:选择性粘贴 选中要转换的数据-->进行复制-->鼠标选中A1单元格-->右键-->选择性粘贴 -->勾选上"转置"-->确定-->列转行转换成功 转换结果展示

Excel 行列转置 解决竖向拉,字母跟着递增的问题

今天工作中遇到需要将Excel行列转置涉及到的数据单元格一共几千个 查询网上说可以通过复制粘贴单元格,粘贴选项中转置一项实现,但是所涉及的sheet页中,数据格式和单元格格式各不一样,转置失败! 怎么做呢? 先看看查询Excel函数的结果: 首先看看INDERECT函数的定义:返回字符串所指定的索引 比如: 有了这个函数,解决当前问题的思路就是在竖向拖动的时候,能对应到INDIRECT("A1"),INDIRECT("B1"),INDIRECT("C1&q

解决HTML导出Excel表数字变成科学计数法

在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串前后加 " " 或' ' 或 tab等空白内容都是行不通的,excel会自动去掉这些.除非你在数字串中间加,当然这样就不是我们要的结果了) 解决方案之一:<td style="mso-number-format:'\@';">1008211999090912

javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo

javascript 自己实现数字\字母和中文的混合排序方法(纯粹研究,不实用) 前言 在上一篇博文<javascript 数组排序sort方法和自我实现排序方法的学习小结>中,我用自己的方法实现了数字数组的排序. 当然,实际运用中,我还是会使用sort方法更加方便.但是,我上一篇博文,仅仅是实现了数字排序,而srot方法默认可是能给字母实现排序的哦!而我的代码只能排序数字,看起来还是弱弱的. 所以,我得加上能排字母甚至中文的排序方法. 实现代码 $(function(){ var arr =

PHP 数字金额转换成中文大写金额的函数 数字转中文

/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; //精确到分后面就不要了,所以只留两个小数位 $num = round($num, 2); //将数字转化为整数 $num = $num * 100; if (strlen($

PHP实现IP–数字互相转换

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>第一php网提供的教程--PHP实现IP-