J'utilise le HSSFWorkbook dans Apache Poi 3.12 avec Java 1.6 pour transformer les fichiers .xls en fichiers texte délimités par des tabulations. Dans ma méthode processRecord je reçois les valeurs des champs numériques à l'aide d'un FormatTrackingHSSFListener sur un NumberRecord, numrec, dans le code suivant:Apache POI Java 6 à 8 Différence
String value = formatListener.getFormatString(numrec);
Cela prend une valeur, comme 21.9, et il arrondit au nombre entier le plus proche. Mon problème est que lorsque je suis passé à un nouveau serveur qui exécute Java 1.8, la valeur est tronquée au lieu d'être arrondie, donc 21.9 devient 21 au lieu de 22. J'ai parcouru les documents poi d'Apache et ils ne mentionnent pas de changement dans comportement, donc je demande des réponses aux questions suivantes:
- Pourquoi cela se produit-il? (le moins important)
- Existe-t-il un moyen d'extraire la valeur pour arrondir au lieu de tronquer dans Java 1.8?
- Existe-t-il un moyen de récupérer la valeur dans sa forme d'origine sans arrondir ou tronquer?
J'ai déjà essayé une autre façon d'obtenir la valeur du fichier xls:
String value = new DataFormatter().formatCellValue(cell);
mais je reçois le même comportement.
Que se passe-t-il si vous essayez la dernière version d'Apache POI, actuellement 3.17? – Gagravarr
Vous avez probablement déjà vérifié, mais pouvez-vous confirmer que la valeur de numrec était toujours la même entre les versions java? Vous pouvez écrire un test élémentaire pour cela. – Anon
mise à jour à la dernière poi (3.17) a fait le travail, merci à tous – user3813942