java JXL POI EXCEL 列坐标 和 从0开始的数字下标 的相互转换

来源:互联网 发布:sql注入式攻击 编辑:程序博客网 时间:2024/05/22 04:51
/** * 列转数字下标 * @param col * @return */ public static int excelToNum(String col) { //  "AAA"if (col == null)return -1;char[] chrs = col.toUpperCase().toCharArray(); // 转为大写字母组成的 char数组int length = chrs.length;int ret = -1;for (int i = 0; i < length; i++) {ret += (chrs[i] - 'A' + 1) * Math.pow(26, length - i - 1); // 当做26进制来算 AAA=111 26^2+26^1+26^0}return ret;// 702; 从0开始的下标}    /**     * 数字下标转列     * @param index     * @return     */    public static String NumToExcel(int index) {        int shang = 0;        int yu = 0;        List<Integer> list = new ArrayList<Integer>();   //10进制转26进制 倒序        while (true) {            shang = index / 26;            yu = index % 26;            index = shang;            list.add(yu);            if (shang == 0)                break;        }        StringBuilder sb = new StringBuilder();        for (int j = list.size() - 1; j >= 0; j--) {            sb.append((char) (list.get(j) + 'A' - (j > 1 ? 1 : j)));     //倒序拼接  序号转字符 非末位 序号减去 1        }        return sb.toString();    } 
方便 定位 具体 单元格 位置 和其他 应用场景