前端界面类似EXCEL,需要写JS代码将获得的列索引转换为字母,例如:1转换为A,2转换为B...
1、有个简单的办法就是创建多个Array,存储数字和字母的关系,然后根据列的数字索引分区段遍历Array,找到数字对应的字母。这个方法是最简单和高效的。
2、另外一个方法就是受了JAVA编码的启发,我没搜到JS码阿(我写了以后大家就能搜到了),然后试着把JAVA代码给翻译了一下,竟然成功了,汗一个,下附JAVA码和JS码
JavaScript: /** * 列数字转字母. 例如: 1\2\3\4 转换为 A\B\C\D * * @param number * 列索引,从1开始 * @return */ function numToColNo(number) { var result = ""; var INT_26 = 26; var INT_64 = 64; if (number <= INT_26) { result = result + String.fromCharCode(number + INT_64); } else { do { var value = number % INT_26; if (value == 0) { result = result + 'Z'; number = number / INT_26 - 1; } else { result = result + String.fromCharCode(value + INT_64); number /= INT_26; } } while (number > INT_26); result = result + String.fromCharCode(number + INT_64); } var reverse = new StringBuffer(); for (var i = result.length - 1; i >= 0; --i) { reverse.append(result.charAt(i)); } return reverse.toString(); }
Java: /** * 列数字转字母. * 例如: 1\2\3\4 转换为 A\B\C\D * @param number 列索引,从1开始 * @return */ public String numToColNo(int number) { String result = ""; final int INT_26 = 26; final int INT_64 = 64; if (number <= INT_26) { result = result + (char) (number + INT_64); } else { do { int value = number % INT_26; if (value == 0) { result = result + 'Z'; number = number / INT_26 - 1; } else { result = result + (char) (value + INT_64); number /= INT_26; } } while (number > INT_26); result = result + (char) (number + INT_64); } StringBuffer reverse = new StringBuffer(); for (int i = result.length() - 1; i >= 0; --i) { reverse.append(result.charAt(i)); } return reverse.toString(); }