Я использую Apache POI для создания большой электронной таблицы Excel, которая чрезвычайно сложна для клиента и может впоследствии изменить код моей программы новыми формулами. Большая проблема, с которой я сталкиваюсь, связана с тем фактом, что книги POI индексируются по 0 для их строк и столбцов, а формулы Excel обрабатывают документ так, как если бы он был индексирован по 1. Я использую класс помогли сделать преобразования прямо сейчас:
class RowHelper {
public static int getCell(int col) {
return col - 1;
}
public static String getCellAddress(int row, int col) {
return CellReference.convertNumToColString(col) + row;
}
}
И когда я редактирую строки в документе, я пишу это так:
posRow.getCell(RowHelper.getCell(189)).setCellFormula(String.format("COUNT(%1$s:%2$s)", RowHelper.getCellAddress(2, 177), RowHelper.getCellAddress(ActiveSheet.getPhysicalNumberOfRows(), 177)));
//=COUNT(FU2:FU477)
Но это не очень чистый код, и клиенту будет нелегко использовать его позже в будущем. Есть ли лучший способ сделать это?