2010-07-30 11 views
9

Per un'applicazione Java che trascina dati da alcune origini e esegue autonomamente alcuni calcoli, vogliamo offrire agli utenti la possibilità di utilizzare le proprie stringhe di formato e preferire la sintassi della stringa di formato che conoscono da Excel (ad esempio "$ "#,###.,0). essere lo stesso utilizzato in .net e Analysis Services.Esiste ovunque una libreria Java che supporti esattamente le stringhe di formato di Excel?

La cosa più vicina a utilizzare che ho trovato in Java è DecimalFormat che manca di alcune delle caratteristiche (ad esempio, migliaia e milioni di formattazione mettendo il separatore delle migliaia, alla fine, il galleggiante numeri in virgola Nan e l'infinito sono visualizzati in modo diverso, etc. e, probabilmente, a seconda del paese, ci saranno alcune piccole differenze aggiuntive.

Per ora, solo la formattazione numerica sarebbe sufficiente. Forse la data e formattazione di stringhe diventerà un requisito in futuro.

c'è una biblioteca, o dovremmo svilupparlo da soli?

Non riesco a immaginare che siamo gli unici ad avere questo problema.

POI come suggerito da Noel M non sembra offrire una soluzione. Altre idee?

risposta

2

C'è una biblioteca, o avrebbe dobbiamo sviluppare che noi stessi?

Controllare ExtenXLS, il foglio di calcolo Java SDK, o la sua versione open source OpenXLS (sotto GPLv.3). A proposito di OpenXLS:

OpenXLS è la versione open-source di ExtenXLS - il principale Java Spreadsheet SDK.

OpenXLS è il modo non rischioso di incorporare la funzionalità avanzata Java spreadsheet Java nelle applicazioni.

Con lo stesso codice di livello industriale come ExtenXLS3, OpenXLS è un esecutore solida che dà le applicazioni Java la funzionalità foglio vostra richiesta degli utenti - e poi alcuni!

offrire agli utenti business intelligence applicazioni e report in formato che conoscono e amano, completo di Grafici, immagini, codice VB, e tutte le caratteristiche di Excel intatte.

ho avuto un rapido sguardo alla API e abbiamo trovato questo FormatHandle#convertFormatString(String) che di convertire una stringa di formato in stile Excel in un formato stringa di Java.

Non so se soddisferà i tuoi limiti ma è sicuramente un prodotto serio.

+0

Questa è la risposta più vicina a quello che mi aspettavo quando ho fatto la mia domanda - anche se non la useremo - poiché la licenza è GPL (quindi non utilizzabile nel nostro prodotto commerciale) o ha una licenza commerciale (che è troppo costosa per il piccolo uso faremo di una libreria completa di fogli di calcolo). – Frank

3

Apache POI potrebbe essere in grado di fare quello che stai cercando.

+0

Ho pensato di gestire solo i file di MS Office. Ma forse un effetto collaterale è la formattazione numerica. Darò un'occhiata. – Frank

+0

@Frank - HSSF è il componente per Excel: http://poi.apache.org/spreadsheet/index.html –

+0

Non sembra che il PDI possa aiutare qui. Per quel che vedo, il POI non offre di per sé alcuna valutazione del formato. Permette solo di definire i formati e assegnarli alle celle. Il numero reale per visualizzare la conversione di stringhe sembra essere fatto solo da Excel e mai da POI stesso. – Frank

3

Nessuna libreria esiste per Java che esegue questo tipo di analisi. Excel in reverse engineering per coprire tutti i casi di test richiederebbe molto tempo per un prodotto di nicchia.

Poiché .net convertirà il 100% dei casi di test, suggerisco di concentrarsi su calling .Net in your Java application.

+0

Chiamare .net da Java è una delle opzioni che discutiamo al momento. Ma poiché questo è pensato per un'applicazione da distribuire a clienti diversi, un enorme svantaggio sarebbe la complessità aggiuntiva del processo di distribuzione. – Frank

0

(aggiunta di un'altra risposta, come si fa riferimento al mio primo nella tua domanda ora)

sembra che un tale impianto non esiste. Una cosa che potresti essere in grado di esplorare è crearla tu stesso. È possibile utilizzare JavaCC per esprimere autonomamente questi formati e il modo in cui terminano il mapping con oggetti Java tipici. JavaCC sarebbe sicuramente in grado di darti la possibilità di usare le tue stringhe di formato.

Forse questo si adatterebbe nel bene come l'implementazione di NumberFormat

+0

Oltre a chiamare .net, questa è un'altra possibilità che stiamo discutendo.Non sono sicuro, tuttavia, se per il semplice compito di analizzare una stringa di formato un generatore di compilatori non sia troppo costoso, e semplicemente codificarlo manualmente non sarebbe più facile, a condizione che nessuno nel team abbia finora utilizzato JavaCC. – Frank

+0

@Frank Che opportunità perfetta per migliorare il CV! –

1
+0

Mentre la funzionalità JDK offre la formattazione, ci sono alcune differenze nella formattazione .net/Excel/AS. E non sono sicuro che non sarebbe più uno sforzo cercare di adattare la funzionalità esistente piuttosto che sviluppare un formattatore completamente da zero. Penso, tuttavia, che esaminare i formattatori esistenti possa darvi alcune idee su come potrebbe essere una buona API di una classe personalizzata. – Frank