POI / Excel: appliquer des formules de manière "relative"
Je suis en utilisant Apache POI à manipuler Excel (.xls fichiers) avec Java.
Je suis en train de créer une nouvelle cellule dont le contenu est le résultat d'une formule, comme si l'utilisateur avait copié/collé de la formule (ce que j'appelle la "relative", par opposition à "absolue").
Pour me faire plus clair, voici un exemple simple :
La cellule A1 contient "1",B1 contient "2", A2 contient "3", B2 contient "4".
La cellule A3 contient la formule "=A1+B1".
Si je copie la formule de l'A4 cellule sous excel, il devient "=A2+B2" : excel est d'adapter le contenu de la formule de façon dynamique.
Malheureusement je ne peux pas obtenir le même résultat par programmation. La seule solution que j'ai trouvé est pour marquer la formule et de faire le sale travail moi-même, mais je doute vraiment que ce qui est censé être fait de cette manière. Je n'étais pas en mesure de trouver ce que je cherche dans les guides ou dans l'API.
Est-il un moyen plus simple pour résoudre ce problème ? Si c'est le cas, pouvez-vous s'il vous plaît me diriger dans la bonne direction ?
Cordialement,
Nils
source d'informationauteur Nils
Vous devez vous connecter pour publier un commentaire.
Moi aussi, je pense qu'il n'y a pas un moyen facile de le faire.
Même le HSSF et XSSD exemples le POI site par exemple TimesheetDemo ne la formule de construction manuellement. par exemple, autour de la ligne 110
À mon sens, user2622016 est en droit, à l'exception de sa solution ne gère que cellule références, par opposition à zone références (il ne fonctionnera pas pour
=SUM(A1:B8)
par exemple).Voici comment j'ai résolu ce :
Je ne sais toujours pas si je l'avais correcte pour toutes les formules des cellules, mais cela fonctionne pour moi, rapide et fiable.
J'ai regardé à l'intérieur FormulaEvaluator classe et a trouvé quelques PI interne des classes qui peuvent faire le travail pour nous.
FormulaParser, qui analyse la Chaîne à la gamme des "analyser les choses":
ptgs est maintenant notre formule en notation polonaise inversée. Maintenant, allez à travers tous les éléments et modifier des références, un par un, comme vous le souhaitez:
Et vous êtes prêt à rendre "analyser les choses" retour à la Chaîne:
Je ne pense pas qu'il y est. PI faudrait analyser la formule (en tenant compte de l'A1 vs $A$1 ou $A1 etc.) et je ne crois pas qu'il a cette capacité. Quand j'ai fait cela dans le passé, j'ai toujours eu à gérer moi-même. Désolé - pas la réponse que vous espériez!
vous pouvez essayer certains des tiers excel la bibliothèque,la plupart d'entre eux peut traiter la relative/absolue gamme de formules.