如果我的列号是26,当我创建一个公式时,我的公式应该像这样:例如SUM(AA1:AA3)。但是如何将26转换成AA?27转换成AB呢?Apache POI是否有一种方法可以使用列索引作为整数并将其转换为字母表示形式?
如果我的列号是26,当我创建一个公式时,我的公式应该像这样:例如SUM(AA1:AA3)。但是如何将26转换成AA?27转换成AB呢?Apache POI是否有一种方法可以使用列索引作为整数并将其转换为字母表示形式?
接受一个以0为基数的十进制列,并返回一个ALPHA-26表示。
public static String columnName(int index) {
StringBuilder s = new StringBuilder();
while (index >= 26) {
s.insert(0, (char) ('A' + index % 26));
index = index / 26 - 1;
}
s.insert(0, (char) ('A' + index));
return s.toString();
}
以下是一个测试示例:
public static void main(String[] args) {
System.out.println(columnName(25));
System.out.println(columnName(26));
System.out.println(columnName(52));
System.out.println(columnName(27 * 26));
}
输出:
Z
AA
BA
AAA
Erwin Bolwidt有正确的想法。
用英语表达是:
num / 26 - 1 = first_letter
num % 26 = second_letter
那么举个例子:
27 / 26 - 1 = 0 => A
27 % 26 = 1 => B
Thus:
27 = AB