私は 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)
しかし、これはあまりきれいなコードではなく、後でクライアントが使用するのは簡単ではありません。これを行うより良い方法はありますか?