Comment définir les formules dans les cellules à l'aide d'Apache POI?
Je suis actuellement en utilisant Apache POI pour Java pour définir les formules dans les cellules.
Mais après je lance le programme et ouvrez le fichier Excel que j'ai créé et traitées, les cellules contenant la formule inclure la formule comme une chaîne de caractères, plutôt que la valeur de la formule sont de retour.
- Êtes-vous à l'aide de setCellFormula (poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/...)?
- yep. Fondamentalement, mon concept est défini par l'utilisateur, pas pris en charge par defualt par excel. C'est quelque chose comme ceci: "=IQLink|yhoo!changer" Tous les il ne il obtient les stocks actuels de prix par l'intermédiaire de son programme d'achat d'actions. Mais le point est la formule n'est pas pris en charge par excel par défaut et de ne rien avoir à faire avec elle?
- Ajouté apache poi tag.
- Qu'advient-il si vous dites à Excel pour recalculer manuellement toutes les formules (office.microsoft.com/en-us/excel/...)?
- quand je vais dans l'excel et recalculer manuellement, ils fonctionnent comme prévu...je ne sais pas pourquoi le poi peut pas faire la même chose.
- Je ne crois poi peut faire n'importe quelle formule de l'évaluation.
Vous devez vous connecter pour publier un commentaire.
La
HSSFCell
objet a des méthodes.setCellType
et.setCellFormula
qui vous devez appeler comme ceci:Le code ci-dessous a bien fonctionné pour moi, espérons que cela pourrait être utile à quelqu'un.
Constante de cellule sont obsolètes et seront supprimés à partir de la version 4.0
au lieu de l'Utilisation des Cellules
"=DATEDIF(A2,NOW(),\"y\")"
à l'aide de la méthode ci-dessus renvoie une exception pour tout des formules personnalisées.Apache POI ne prend pas en charge les fonctions définies par l'utilisateur.
De la la documentation:
Vous pouvez l'utiliser pour évaluer les formules dans le classeur:
J'ai eu le même problème et
"SUM(B4:B20)"
ne fonctionne pas pour moi directement que la feuille a été généré dynamiquement. Le problème était avec la référence de la cellule.Sur la base de https://stackoverflow.com/a/2339262/2437655 et https://stackoverflow.com/a/33098060/2437655 j'ai été en mesure de générer de la formule réelle. par exemple,
Espérer que l'aide.