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

Java poi Excel xls列号数字转字母

最近遇到导出的xls中 列是动态生成的,且单元格中需要用到公式,而xls公式不是用数字列号而是用列字母来表示的,这时需要把数字的列号转成该列对应的字母。因为是按月导出 一个月最多31天,所以刚开始采用...
  • lf124
  • lf124
  • 2016年12月02日 16:24
  • 1548

Excel中列数字与字母的转换(JAVA实现)

代码如下: public static String getExcelColumnLabel(int index)  {  String rs = "";  do {   index--;   rs ...
  • Mars_Yuan
  • Mars_Yuan
  • 2010年05月23日 00:09
  • 1998

VBA中将 Excel 列号转换为字母字符

  • 2013年07月17日 08:52
  • 487B
  • 下载

java 数字与字母的转换

public class TestConvert { // 将字母转换成数字_1 public static String t1(String input) { String reg...
  • ge_zhiqiang
  • ge_zhiqiang
  • 2012年06月07日 23:33
  • 26537

Excel 如何获取列号(字母形式)

公式如下: =IF(COLUMN()>26,(LEFT(ADDRESS(ROW(),COLUMN(),4),2)),(LEFT(ADDRESS(ROW(),COLUMN(),4))))...
  • lexin851010
  • lexin851010
  • 2017年09月12日 10:46
  • 218

Excel地址

问题描述   Excel单元格的地址表示很有趣,它使用字母来表示列号。   比如,   A表示第1列,   B表示第2列,   Z表示第26列,   AA表示第27列,   AB表示第28列,   B...
  • wz1997
  • wz1997
  • 2017年12月30日 14:30
  • 189

excel列数由数字转为字母形式

核心代码如下: 假设nCol表示输入的列数  //把列数转化为字符  short quotient;  short remainder;  CString szCol, szTmp;  szCol.E...
  • gwabwy
  • gwabwy
  • 2010年05月26日 17:52
  • 1124

VBA实现数字列与字母列的相互转化

VBA实现数字列与字母列的相互转化的方法
  • gold_star
  • gold_star
  • 2016年09月13日 16:31
  • 4704

一道面试题,把excel的列的名称转换为数字

这是一道某公司的上机面试题: microsoft excel 中栏目是用 A,B,C...Z;AA,AB,...ZZ ... ZZZZ ....这样表示序列的它对应是这样 0,1,2,...25;26...
  • justin_bkdrong
  • justin_bkdrong
  • 2016年11月15日 21:11
  • 468

java实现在Excel2003中,用A表示第一列,B表示第二列...Z表示第26列,AA表示第27列,AB表示第28列...依次列推。请写出一个函数, 输入用字母表示的列号编码,输出它是第几列

public class Solution_excel2003 { public int Find(String str) { char[] strArr = str.toCharArra...
  • pomay
  • pomay
  • 2017年05月11日 12:07
  • 808
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Excel 列号数字与字母互相转换
举报原因:
原因补充:

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