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++) {//遍历每个位置
	      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) {
	        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小工具,用于行里字母数字索引转换,源码就不贴出来了,核心的都在上面,就是简单的包装了下,直接下载即可。

http://download.csdn.net/detail/hackersaillen/8797407


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现Excel行列转换,可以使用Python中的pandas库来处理。首先,我们需要读取Excel文件,并将其转换为DataFrame对象。然后,可以使用DataFrame的T属性来进行行列转置。最后,将转置后的DataFrame保存为新的Excel文件。下面是一种实现的代码示例: ``` import pandas as pd # 读取Excel文件 df = pd.read_excel("input.xlsx") # 转置行列 df_transposed = df.T # 保存为新的Excel文件 df_transposed.to_excel("output.xlsx", index=False) ``` 在这个代码示例中,我们假设输入的Excel文件名为"input.xlsx",输出的Excel文件名为"output.xlsx"。你可以根据实际情况修改这些文件名。通过这段代码,你可以实现Excel行列转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Excel 行列转换的最简方法](https://blog.csdn.net/weixin_39922394/article/details/111932214)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [java实现excel行列转换](https://blog.csdn.net/weixin_32365089/article/details/114048314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值