2010-07-30 8 views
9

Pour une application Java qui tire des données de certaines sources et effectue elle-même des calculs, nous souhaitons offrir aux utilisateurs la possibilité d'utiliser leurs propres chaînes de format et préférer la syntaxe de chaîne de format Excel (par exemple "$ "#,###.,0) être le même utilisé dans .net et Analysis Services. La chose la plus proche que j'ai trouvée en Java est DecimalFormat qui manque de certaines fonctionnalités (par exemple des milliers et des millions de mise en forme en mettant le séparateur des milliers à la fin, les nombres flottants NaN et infini sont affichés différemment, etc. , et probablement en fonction du pays, il y aura quelques petites différences.Existe-t-il une bibliothèque Java compatible avec les chaînes de format Excel?

supplémentaires Pour l'instant, la mise en forme numérique suffit. Date Peut-être et la mise en forme de chaîne deviendra une exigence à l'avenir.

y at-il une bibliothèque, ou devrions-nous développer cela nous-mêmes?

Je ne peux pas imaginer que nous sommes les seuls à avoir ce problème. Les POI suggérés par Noel M ne semblent pas offrir une solution. D'autres idées?

Répondre

2

Y at-il une bibliothèque, ou devrions-nous développer que nous-mêmes?

Vérifiez ExtenXLS, le SDK Java de feuille de calcul, ou sa version open source OpenXLS (sous GPLv.3). A propos OpenXLS:

OpenXLS est la version open-source de ExtenXLS - le premier Java SDK de feuille de calcul. OpenXLS est la manière sans risque d'intégrer la fonctionnalité de la feuille de calcul Java avancée dans vos applications.

Avec le même code-force industrielle comme ExtenXLS3, OpenXLS est une roche solide interprète qui donne à votre Java applications tableur fonctionnalité votre demande des utilisateurs - et encore!

donner à vos utilisateurs de business intelligence applications et rapports dans le format qu'ils connaissent et aiment, avec graphiques, des images, le code VB et tous les fonctionnalités d'Excel intactes.

J'ai eu un coup d'œil à l'API et ont trouvé cet FormatHandle#convertFormatString(String) que convertit une chaîne de format de style Excel à une chaîne de format Java.

Je ne sais pas si cela va correspondre à vos contraintes, mais c'est certainement un produit sérieux.

+0

C'est la réponse la plus proche de ce à quoi je m'attendais en posant ma question - même si nous ne l'utiliserons pas - car la licence est soit GPL (donc non utilisable dans notre produit commercial), soit commerciale (trop chère pour le petit usage que nous ferons d'une bibliothèque de feuille de calcul complète). – Frank

3

Apache POI peut être en mesure de faire ce que vous cherchez.

+0

Je pensais qu'il ne gère que les fichiers MS Office. Mais peut-être un effet secondaire est le formatage des nombres. J'irais regarder. – Frank

+0

@Frank - HSSF est le composant pour Excel: http://poi.apache.org/spreadsheet/index.html –

+0

Il ne semble pas que les POI peuvent aider ici. Pour autant que je sache, le POI ne propose aucune évaluation de format. Cela vous permet simplement de définir des formats et de les affecter à des cellules. Le nombre réel pour afficher la conversion de chaîne semble alors être fait seulement par Excel, et jamais dans le POI lui-même. – Frank

3

Aucune bibliothèque n'existe pour Java qui effectue ce type d'analyse. L'ingénierie inverse d'Excel pour couvrir tous les cas de test prendrait du temps pour un tel produit de niche.

Depuis .net convertira 100% de vos cas de test, je vous suggère de vous concentrer sur calling .Net in your Java application.

+0

L'appel de .net depuis Java est l'une des options dont nous discutons actuellement. Mais comme cela est destiné à une application à déployer chez différents clients, un inconvénient majeur serait la complexité supplémentaire du processus de déploiement. – Frank

0

(Ajouter une autre réponse que vous faites référence à mon premier dans votre question maintenant)

Il semble qu'une telle installation n'existe pas. Une chose que vous pourriez explorer est de le créer vous-même. Vous pouvez éventuellement utiliser JavaCC pour exprimer ces formats vous-même et comment ils finissent par être mappés à des objets Java typiques. JavaCC serait certainement en mesure de vous donner la possibilité d'utiliser vos propres chaînes de format.

Peut-être cadrerait bien comme une mise en œuvre de NumberFormat

+0

En dehors de l'appel .net, c'est une autre possibilité dont nous discutons.Je ne suis pas sûr, cependant, que pour la simple tâche d'analyser une chaîne de format, un générateur de compilateur ne soit pas trop lourd et que le codage manuel ne soit pas plus facile, à condition que personne dans l'équipe n'ait utilisé JavaCC. – Frank

+0

@Frank Quelle opportunité parfaite pour apprendre à améliorer votre CV! –

1
+0

Bien que la fonctionnalité JDK offre un formatage, il existe certaines différences avec le formatage .net/Excel/AS. Et je ne suis pas sûr que ce ne serait pas plus difficile d'essayer d'adapter la fonctionnalité existante que de développer un formateur complètement à partir de zéro. Je penserais, cependant, que regarder les formateurs existants peut vous donner quelques idées à quoi pourrait ressembler une bonne API d'une classe personnalisée. – Frank