J'utilise Apache POI pour créer une grande feuille de calcul Excel extrêmement lourde pour un client qui peut modifier le code de mon programme avec de nouvelles formules. Le gros problème que je rencontre concerne le fait que les classeurs de POI sont indexés sur 0 pour leurs lignes et colonnes, tandis que les formules Excel traitent le document comme s'il était indexé sur 1. J'utilise une classe aidé à faire les conversions en ce moment:Apache POI Excel Indexation de lignes et de colonnes
class RowHelper {
public static int getCell(int col) {
return col - 1;
}
public static String getCellAddress(int row, int col) {
return CellReference.convertNumToColString(col) + row;
}
}
Et quand je modifier des lignes dans le document que je l'écrire comme ceci:
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)
Mais ce n'est pas le code très propre et ne sera pas très facile à utiliser par le client plus tard. Existe-t-il une meilleure façon de le faire?
Merci pour la suggestion! J'ai fini par créer de nouvelles classes pour chaque type (JWorkbook, JSheet, etc.) comme vous l'avez fait et j'ai implémenté la même interface que les originaux pour pouvoir les transmettre comme les mêmes objets. – taiidani