Excel列数与对应字母的转化

本文提供了两个实用的Java函数,分别用于将Excel中的列号转换为对应的字母标识,以及相反的操作。此外还介绍了如何在Excel中使用公式验证这些转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近遇到这样个问题,将数据写进Excel文档中,在插入公式的时候希望得到某列对应的字母,如给第一列对应'A',第52列对应'AZ'

现将代码贴出,后面待用

 

public String getExcelColumnLetter(int column){
    String columnLetter = "";
    while(column > 26){
        int remainder = column % 26;
        if(0 == remainder){
            columnLetter = (char)(64+26) + columnLetter;
            column=(column-26)/26;
        }else{
            columnLetter = (char)(64+remainder) + columnLetter;
            column=(column-remainder)/26;
        }
    }
    columnLetter = (char)(64+column) + columnLetter;
    return columnLetter;
}

 这段代码列数是是从1开始的。

 

另外在网上看见一段相同功能的代码,相比更加简洁一点

 

public static String getExcelLabel(int index) {
    String rs = "";
    do {
        index--;
        rs = ((char) (index % 26 + (int) 'A')) + rs;
        index = (int) ((index - index % 26) / 26);
    } while (index > 0);
    System.out.println(rs);
    return rs;
}

 上面这两段代码未对传入的参数做判断,如果传入负数就悲催了,等着返回各种字符吧。需要的时候可以在函数开始处添加判断语句。

 

 

       完成这段代码之后又没事写了个从字母到列数的函数,也贴出来吧

 

public int getExcelColumnIndex(String columnLetter){
    if(columnLetter == null || !columnLetter.matches("[a-zA-Z]+")){
        return -1;
    }
    columnLetter = columnLetter.toUpperCase();
    int columnIndex = 0;
    char[] letters = columnLetter.toCharArray();
    for(char let : letters){
        columnIndex = (int)let - 64 + columnIndex*26;
    }
    return columnIndex;
}

 这段代码对传入的字符串没有大小写的限制,但是必须全是字母组成,否则返回-1。表示字符串不合法。

 

最后提供一个验证方法

在Excel中某个单元格输入列数对应的字母如A1单元格输入AB,然后在B1单元格输入公式=COLUMN(INDIRECT(A1&3))

这样就可以在B1单元格得到AB列对应的列数28,在excel2007中最大好像只能输入XFD。

 

倒过来,可以在A2单元格输入列数如28,在B2单元格输入=LEFT(ADDRESS(1,A2,4,1),LEN(ADDRESS(1,A2,4,1))-1)

 就可以在B2单元格得到28列对应的列标字母AB了。XFD对应的列数是16384,所以输入的数不要大于16384。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值