Java Excel 列号数字与字母互相转换

原创 2015年07月08日 17:31:25

Java Excel 列号数字与字母互相转换


Java Excel 列号数字与字母互相转换

我们在实现对Excel的导入导出的时候,往往需要准确的给用户提示信息,提示到具体的Excel的单元格,这里就需要对Excel的列号进行数字和字母的转换,今天正好用到这个需求,所以就写了一个demo,总结一下:

Java实现

Java:

package test;

/**
 * Deal with Excel column indexToStr and strToIndex
 * @author Stephen.Huang
 * @version 2015-7-8
 * @see http://blog.csdn.net/u010571844
 */
public class ExcelColumn {

    public static void main(String[] args) {
        String colstr = "AA";
        int colIndex = excelColStrToNum(colstr, colstr.length());
        System.out.println("'" + colstr + "' column index of " + colIndex);

        colIndex = 26;
        colstr = excelColIndexToStr(colIndex);
        System.out.println(colIndex + " column in excel of " + colstr);

        colstr = "AAAA";
        colIndex = excelColStrToNum(colstr, colstr.length());
        System.out.println("'" + colstr + "' column index of " + colIndex);

        colIndex = 466948;
        colstr = excelColIndexToStr(colIndex);
        System.out.println(colIndex + " column in excel of " + colstr);
    }

    /**
     * Excel column index begin 1
     * @param colStr
     * @param length
     * @return
     */
    public static int excelColStrToNum(String colStr, int length) {
        int num = 0;
        int result = 0;
        for(int i = 0; i < length; i++) {
            char ch = colStr.charAt(length - i - 1);
            num = (int)(ch - 'A' + 1) ;
            num *= Math.pow(26, i);
            result += num;
        }
        return result;
    }

    /**
     * Excel column index begin 1
     * @param columnIndex
     * @return
     */
    public static String excelColIndexToStr(int columnIndex) {
        if (columnIndex <= 0) {
            return null;
        }
        String columnStr = "";
        columnIndex--;
        do {
            if (columnStr.length() > 0) {
                columnIndex--;
            }
            columnStr = ((char) (columnIndex % 26 + (int) 'A')) + columnStr;
            columnIndex = (int) ((columnIndex - columnIndex % 26) / 26);
        } while (columnIndex > 0);
        return columnStr;
    }
}

测试结果:

‘AA’ column index of 27
26 column in excel of Z
‘AAAA’ column index of 18279
466948 column in excel of ZNSN

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

poi读取excel手机号

apache的poi读取excel的长数字数据: 在做批量时候,用到了apache的poi,。之前也做过关于手机的。我们会发现,在导入时,获取了cell后,mobile = memberCell.t...

java 数字与字母的转换

public class TestConvert { // 将字母转换成数字_1 public static String t1(String input) { String reg...

java 数字与字母的转换

转载自:http://blog.csdn.net/ge_zhiqiang/article/details/7643683 public class TestConvert {       ...

java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式

当使用POI处理excel的时候,遇到了比较长的数字,虽然excel里面设置该单元格是文本类型的,但是POI的cell的类型就会变成数字类型。  而且无论数字是否小数,使用cell.getNum...

Excel 列名与列号之间的相互转换

1.概述在sheet中,表元A1, B1, C1….:字母表示列号,数字表示行号 2.代码实现package util;/** 1. 工具类 2. */ public final class E...

java 实现给定一个excel表中的列标题,返回相应的行号

题目:Related to question Excel Sheet Column TitleGiven a column title as appear in an Excel sheet, ret...

使用POI是读取excel文件中电话号码及日期出现的问题及解决

开发中使用POI导入excel文件,中间有个单元格是电话号码,但是读取后有点问题,比如13200000000,变成1.3200000000E10,这个时候需要我们再去转换下 [java]...

TCP网络通讯如何解决分包粘包问题

TCP数据传输是以无边界的数据流传输形式,所谓无边界是指数据发送端发送的字节数,在数据接收端接受时并不一定等于发送的字节数,可能会出现粘包情况。 TCP粘包情况: 1. 发送端发送了数量比较的数据,接...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)