Pregunta ¿Hay alguna biblioteca de Java disponible que admita exactamente las cadenas de formato de Excel?


Para una aplicación Java que arrastra datos desde algunas fuentes y realiza algunos cálculos, queremos ofrecer a los usuarios la posibilidad de usar sus propias cadenas de formato, y preferiríamos la sintaxis de cadenas de formato que conocen de Sobresalir (p.ej. "$ "#,###.,0) que pasa a ser el mismo utilizado en .red y Servicios de análisis.

Lo más parecido a usar que encontré en Java es DecimalFormat que carece de algunas de las características (por ejemplo, miles y millones formateando colocando el separador de miles al final, los números de punto flotante NaN e infinito se muestran de forma diferente, etc., y probablemente dependiendo de la configuración regional, habrá algunas pequeñas diferencias adicionales).

Por ahora, solo el formateo numérico sería suficiente. Tal vez el formato de fecha y cadena se convertirá en un requisito en el futuro.

¿Hay una biblioteca, o tendremos que desarrollar eso nosotros mismos?

No me puedo imaginar que somos los únicos que tenemos este problema.

El POI sugerido por Noel M no parece ofrecer una solución. ¿Alguna otra idea?


9
2017-07-30 14:14


origen


Respuestas:


¿Hay una biblioteca, o tendremos que desarrollar eso nosotros mismos?

Comprobar ExtenXLS, el SDK de Java Spreadsheet, o su versión de código abierto OpenXLS (bajo GPLv.3). Acerca de OpenXLS:

OpenXLS es la versión de código abierto de   ExtenXLS: el líder de Java   SdSheet SDK.

OpenXLS es la forma más segura de incrustar   hoja de cálculo Java avanzada   funcionalidad en sus aplicaciones.

Con el mismo código de fuerza industrial   como ExtenXLS3, OpenXLS es una roca sólida   intérprete que le da su Java   aplicaciones de la hoja de cálculo   funcionalidad que sus usuarios demandan, y   ¡entonces algunos!

Ofrezca a sus usuarios inteligencia empresarial   aplicaciones e informes en el formato   ellos saben y aman, completan con   Gráficos, imágenes, código VB y todos   las características de Excel intactas

Eché un vistazo rápido a la API y encontré esto FormatHandle#convertFormatString(String) ese convierte una cadena de formato de estilo Excel en una cadena de formato Java.

No sé si coincidirá con tus limitaciones, pero definitivamente es un producto serio.


2
2017-08-13 02:55



POI Apache podría ser capaz de hacer lo que estás buscando.


3
2017-07-30 14:25



No existe ninguna biblioteca para Java que realice este tipo de análisis. La ingeniería inversa de Excel para cubrir todos los casos de prueba llevaría mucho tiempo para un producto de ese nicho.

Dado que .net convertirá el 100% de sus casos de prueba, le sugiero que se concentre en llamando .Net en su aplicación Java.


3
2017-08-10 18:16



para formato decimal incluyendo locale y otras cosas:

http://www.jdocs.com/javase/7.b12/java/text/DecimalFormat.html

http://www.freshsources.com/Format.htm

http://www.java2s.com/Code/Java/I18N/JavaI18NFormatNumberFormat.htm

Puede modificar la salida de formato de decimal usando sus propios DecimalFormatSymbols personalizados. Es posible configurar la cadena utilizada para representar NaN y mucho más.

http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormatSymbols.html

para el formato de fecha:

http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/

para ambos en un JFormattedTextField

http://www.java2s.com/Code/Java/Swing-JFC/Formatted-TextField.htm

formato de texto

http://www.java2s.com/Code/Java/Development-Class/MakecustomInputTextFormatterinJava.htm http://www.java2s.com/Code/Java/Development-Class/Formatter.htm http://www.java2s.com/Code/Java/Development-Class/ApplyamasktoString.htm


1
2017-08-11 16:39



(Agregando otra respuesta al referirse a la primera en su pregunta ahora)

Parece que tal instalación no existe. Una cosa que podrías explorar es crearla tú mismo. Podrías posiblemente usar JavaCC para expresar estos formatos usted mismo, y cómo terminan mapeando a los objetos típicos de Java. JavaCC definitivamente podría darle la posibilidad de usar sus propias cadenas de formato.

Quizás esto encajaría bien como una implementación de NumberFormat


0
2017-08-10 21:49