2010-07-30 4 views
9

Für eine Java-Anwendung, die Daten aus einigen Quellen zusammenzieht und selbst Berechnungen durchführt, möchten wir Benutzern die Möglichkeit bieten, ihre eigenen Formatzeichenfolgen zu verwenden und bevorzugen die Formatstringsyntax, die sie aus Excel (zB "$ "#,###.,0) kennen gleich verwendet werden in .net und Analysis Services.Gibt es irgendwo eine Java-Bibliothek, die genau die Formatzeichenfolgen von Excel unterstützt?

Die nächste Sache zu verwenden, dass ich in Java gefunden ist DecimalFormat die einige der Funktionen fehlen (zB Tausende und Millionen Formatierung durch die Tausender-Trennzeichen am Ende setzen, die Gleitkommazahlen NaN und unendlich unterschiedlich dargestellt, usw. und wahrscheinlich je nach Region, wird es einige zusätzliche kleine Unterschiede geben.

Vorerst nur die Formatierung von Zahlen ausreichen würde. Vielleicht eine Anforderung in Zukunft wird Datum und String-Formatierung.

gibt es eine Bibliothek, oder müssten wir das selbst entwickeln?

Ich kann mir nicht vorstellen, dass wir die einzigen sind, die dieses Problem haben.

POI wie von Noel M vorgeschlagen scheint keine Lösung zu bieten. Irgendwelche anderen Ideen?

Antwort

2

Gibt es eine Bibliothek, oder würden wir uns entwickeln müssen?

prüfen ExtenXLS, das Java SDK Spreadsheet oder seine Open-Source-Version OpenXLS (unter GPLv.3). Über OpenXLS:

OpenXLS ist die Open-Source-Version von ExtenXLS - dem führenden Java Tabellenkalkulations-SDK.

OpenXLS ist die risikofreie Methode erweiterte Java-Tabellenkalkulation Funktionalität in Ihren Anwendungen einzubetten.

Mit der gleichen Industrie-Stärke Code als ExtenXLS3 ist OpenXLS ein rock-solid Darsteller, die Java-Anwendungen die Nachfrage Tabelle Funktionalität Benutzer gibt - und dann einige!

Geben Sie Ihre Benutzer Business Intelligence Anwendungen und Berichte im Format sie kennen und lieben, komplett mit Charts, Bilder, VB-Code und alle die Features von Excel intakt.

hatte ich einen kurzen Blick auf die API und fand diese FormatHandle#convertFormatString(String) die eine Excel-style-Format-String in einen Java-Format-String konvertiert.

Ich weiß nicht, ob es Ihren Einschränkungen entspricht, aber es ist definitiv ein ernstes Produkt.

+0

Dies ist die nächste Antwort auf das, was ich erwartet habe, wenn ich meine Frage stelle - auch wenn wir sie nicht benutzen werden, da die Lizenz entweder GPL ist (also nicht in unserem kommerziellen Produkt verwendbar) oder eine kommerzielle Lizenz hat (was für die kleinen Gebrauch machen wir eine vollständige Tabellenkalkulationsbibliothek). – Frank

3

könnte in der Lage zu tun, was Sie suchen.

+0

Ich dachte, es verwaltet nur MS Office-Dateien. Aber vielleicht ist ein Nebeneffekt die Zahlenformatierung. Ich werde nachsehen. – Frank

+0

@Frank - HSSF ist die Komponente für Excel: http://poi.apache.org/spreadsheet/index.html –

+0

Es scheint nicht, dass POI hier helfen kann. Soweit ich sehe, bietet POI _not_ selbst keine Formatauswertung. Sie können nur Formate definieren und Zellen zuweisen. Die reelle Zahl zur Anzeige der Stringkonvertierung scheint dann nur von Excel und niemals im POI selbst ausgeführt zu werden. – Frank

3

Es gibt keine Bibliothek für Java, die diese Art von Parsing durchführt. Reverse-Engineering-Excel, um alle Testfälle abzudecken, wäre für ein solches Nischenprodukt zeitaufwendig.

Da .net 100% Ihrer Testfälle konvertieren wird, schlage ich vor, dass Sie sich auf calling .Net in your Java application konzentrieren.

+0

Der Aufruf von .net aus Java ist eine der Optionen, die wir zur Zeit diskutieren. Da dies jedoch für eine Anwendung gedacht ist, die bei verschiedenen Kunden eingesetzt werden soll, wäre ein weiterer Nachteil die zusätzliche Komplexität des Bereitstellungsprozesses. – Frank

0

(Hinzufügen einer weiteren Antwort, wie Sie jetzt auf meine erste in Ihrer Frage beziehen)

Es scheint, dass eine solche Anlage nicht existiert. Eine Sache, die Sie möglicherweise erkunden können, ist, es selbst zu erstellen. Sie können möglicherweise JavaCC verwenden, um diese Formate selbst auszudrücken und wie sie auf typische Java-Objekte mappen. JavaCC würde Ihnen auf jeden Fall die Möglichkeit geben, Ihre eigenen Formatzeichenfolgen zu verwenden.

Vielleicht würde dies passen gut als Implementierung von Number

+0

Neben dem Aufruf von .net ist dies eine weitere Möglichkeit, die wir diskutieren.Ich bin mir jedoch nicht sicher, ob ein Compiler-Generator für die einfache Aufgabe, einen Format-String zu parsen, nicht zu viel Aufwand ist und nur Handcodierung wäre nicht einfacher, vorausgesetzt, dass noch niemand im Team JavaCC verwendet hat. – Frank

+0

@Frank Was für eine perfekte CV-verbessernde Gelegenheit zu lernen! –

1
+0

Während die JDK-Funktionalität Formatierung bietet, gibt es einige Unterschiede zur Formatierung .net/Excel/AS. Und ich bin mir nicht sicher, ob es nicht anstrengender wäre, die bestehende Funktionalität anzupassen, als einen Formatierer komplett neu zu entwickeln. Ich würde jedoch denken, dass ein Blick auf die vorhandenen Formatierer Ihnen einige Ideen geben kann, wie eine gute API einer benutzerdefinierten Klasse aussehen könnte. – Frank

Verwandte Themen