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

来源:互联网 发布:加盟淘宝可靠吗 编辑:程序博客网 时间:2024/05/21 19:42

1.概述

在sheet中,表元A1, B1, C1….:字母表示列号,数字表示行号
这里写图片描述

2.代码实现

package util;/** 1. 工具类 2. */public final class ExcelUtil {    /**将Sheet列号变为列名     * @param index 列号, 从0开始     * @return 0->A; 1->B...26->AA     */    public static String index2ColName(int index) {        if (index < 0) {            return null;        }        int num = 65;// A的Unicode码        String colName = "";        do {            if (colName.length() > 0) {                index--;            }            int remainder = index % 26;            colName = ((char) (remainder + num)) + colName;            index = (int) ((index - remainder) / 26);        } while (index > 0);        return colName;    }    /**根据表元的列名转换为列号     * @param colName 列名, 从A开始     * @return A1->0; B1->1...AA1->26     */    public static int colName2Index(String colName) {        int index = -1;        int num = 65;// A的Unicode码        int length = colName.length();        for (int i = 0; i < length; i++) {            char c = colName.charAt(i);            if (Character.isDigit(c)) break;// 确定指定的char值是否为数字            index = (index + 1) * 26 + (int)c - num;        }        return index;    }}

3.测试 - 列号转列名

  1. 代码实现
package test;import util.ExcelUtil;public class TestIndex2ColName {    public static void main(String[] args) {        System.out.println("列号转换为列名:");        System.out.println("0   --> " + ExcelUtil.index2ColName(0));        System.out.println("1   --> " + ExcelUtil.index2ColName(1));        System.out.println("2   --> " + ExcelUtil.index2ColName(2));        System.out.println("26  --> " + ExcelUtil.index2ColName(26));        System.out.println("27  --> " + ExcelUtil.index2ColName(27));        System.out.println("28  --> " + ExcelUtil.index2ColName(28));        System.out.println("702 --> " + ExcelUtil.index2ColName(702));        System.out.println("703 --> " + ExcelUtil.index2ColName(703));        System.out.println("704 --> " + ExcelUtil.index2ColName(704));    }}
  1. 测试结果
    这里写图片描述

4.测试 - 表元转列号

  1. 代码实现
package test;import util.ExcelUtil;public class TestColName2Index {    public static void main(String[] args) {        System.out.println("表元列名转换为列号:");        System.out.println("A1   --> " + ExcelUtil.colName2Index("A1"));        System.out.println("B1   --> " + ExcelUtil.colName2Index("B1"));        System.out.println("C1   --> " + ExcelUtil.colName2Index("C1"));        System.out.println("AA2  --> " + ExcelUtil.colName2Index("AA2"));        System.out.println("AB2  --> " + ExcelUtil.colName2Index("AB2"));        System.out.println("AC2  --> " + ExcelUtil.colName2Index("AC3"));        System.out.println("AAA1 --> " + ExcelUtil.colName2Index("AAA1"));        System.out.println("AAB1 --> " + ExcelUtil.colName2Index("AAB1"));        System.out.println("AAC1 --> " + ExcelUtil.colName2Index("AAC1"));          }}

2.测试结果
这里写图片描述

原创粉丝点击