excel列字母数字表示互转

       我们都知道Excel表的列使用字母表示的,有时用java操作Excel表时,也许需要将字母表示的列转为数字表示,或将数字转为字母。下面写了个小程序,进行字母数字互转表示列。

package com.fei;

/**
 * 我们都知道excel表的列是用字母表示的
 * java操作excel时,有时难免需要把字母转为数字表示(A=1)
 * 或把数字转为字母表示
 *
 */
public class ExcelColumnTest {

	public static void main(String[] args) {
		System.out.println("A是第"+convertLetterToNum("A")+"列!");
		System.out.println("AB是第"+convertLetterToNum("AB")+"列!");
		
		System.out.println("5是"+convertNumToLetter(5)+"列!");
		System.out.println("110是"+convertNumToLetter(110)+"列!");
	}
	
	/**
	 * 将字母表示的列转为用数字表示(如A=1,AB=28)
	 */
	public static int convertLetterToNum(String letters) {
		letters = letters.toUpperCase();
		int v = 0;
		String regex = "[A-Z]+";
		if (!letters.matches(regex))
			return v;
		int radix = 1;
		for (int i = letters.length() - 1; i >= 0; i--) {
			char c = letters.charAt(i);
			v += (c - 'A' + 1) * radix;
			radix *= 26;
		}
		return v;
	}

	/**
	 * 将数字表示的列转为字母表示(如1=A,28=AB,704=AAB)
	 */
	public static String convertNumToLetter(int colNum) {
		String colLetter = "";
		do {
			colNum--;
			colLetter = ((char) (colNum % 26 + (int) 'A')) + colLetter;
			colNum = (int) ((colNum - colNum % 26) / 26);
		} while (colNum > 0);
		return colLetter;
	}

}

运行结果:

A是第1列!
AB是第28列!
5是E列!
110是DF列!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值