前端界面类似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();
}