Вы можете использовать этот код. Надеюсь, эта помощь. Вы можете использовать его таким образом:
cellAddress(cell.getRow() + 1, cell.getColumn())
если клетка определяется как Cell cell = someCell;
private String cellAddress(Integer rowNumber, Integer colNumber){
return "$"+columnName(colNumber)+"$"+rowNumber;
}
private String columName(Integer colNumber) {
Base columns = new Base(colNumber,26);
columns.transform();
return columns.getResult();
}
class Base {
String[] colNames = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z".split(",");
String equalTo;
int position;
int number;
int base;
int[] digits;
int[] auxiliar;
public Base(int n, int b) {
position = 0;
equalTo = "";
base = b;
number = n;
digits = new int[1];
}
public void transform() {
if (number < base) {
digits[position] = number;
size();
} else {
digits[position] = number % base;
size();
position++;
number = number/base;
transform();
}
}
public String getResult() {
for (int j = digits.length - 2; j >= 0; j--) {
equalTo += colNames[j>0?digits[j]-1:digits[j]];
}
return equalTo;
}
private void size() {
auxiliar = digits;
digits = new int[auxiliar.length + 1];
System.arraycopy(auxiliar, 0, digits, 0, auxiliar.length);
}
}
Спасибо, но это не то, что я хотел. На самом деле я хотел обратить вспять. Например, как я могу получить адрес ячейки «Ячейка (1,1)», например. В любом случае я не нашел решение, мне пришлось написать алгоритм для поиска адреса. –
так что вы хотели 'cells (1,1) .address'? Это возвращает ** $ A $ 1 ** –
@DaveAgaba Я изменил свой ответ, чтобы дать вам то, что вы хотели. –