Java Apache poi Excel:基于列的整数索引创建公式

Java Apache poi Excel:基于列的整数索引创建公式,java,excel,apache-poi,Java,Excel,Apache Poi,假设我的列号是26,当我创建一个公式时,我的公式应该是这样的,比如说:SUM(AA1:AA3)。但是如何将26翻译成AA呢?或者说27对AB?Apache POI有没有办法将列索引用作整数并将其转换为字母表示形式?只需要一点代码: public static String columnName(int index) { StringBuilder s = new StringBuilder(); while (index >= 26) { s.insert(

假设我的列号是26,当我创建一个公式时,我的公式应该是这样的,比如说:SUM(AA1:AA3)。但是如何将26翻译成AA呢?或者说27对AB?Apache POI有没有办法将列索引用作整数并将其转换为字母表示形式?

只需要一点代码:

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

欧文·博维特的想法是正确的

用英语来说,应该是:

num / 26 - 1 = first_letter
num % 26     = second_letter
例如:

27 / 26 - 1 = 0 => A
27 % 26     = 1 => B
因此:

您将希望使用ApachePOI。它提供了需要转换的方法

对于您的具体情况,您需要:

接受一个以0为基础的10进制列,并返回一个ALPHA-26表示形式


@希拉克,这不是问题所在。问题是使用列编号作为参数,而不是使用列字母。1与B关联,2与C关联,等等。问题是当我们开始获得双字母时。Excel 2007及更新版本中的列数限制为16384-即列名XFD[用于索引16383]。所以你需要3封信。也许新版本允许更多;我的函数最多可以处理Integer.MAX_值-那将是列FXSHRXX:-)哦,我明白了。谢谢你的建议。:)事实上,ApachePOI将内置它是很有意义的。
27 = AB