对于从某些来源拖拽数据并自行进行计算的Java应用程序,我们希望为用户提供使用自己的格式字符串的可能性,并且更喜欢他们从Excel知道的格式字符串语法(例如"$ "#,###.,0
)恰好与.net和Analysis Services中使用的相同。
我在Java中找到的最接近使用的是DecimalFormat,它缺少一些功能(例如,通过将千位分隔符放在最后,成千上万的格式化,浮点数NaN和无穷大以不同的方式显示等等,并且可能取决于区域设置,会有一些额外的小差异。
现在,只需数字格式就足够了。也许日期和字符串格式化将成为未来的要求。
是否有图书馆,或者我们是否必须自己开发?
我无法想象我们是唯一有这个问题的人。
Noel M建议的POI似乎没有提供解决方案。还有其他想法吗?答案 0 :(得分:3)
Apache POI也许能够做到你想要的。
答案 1 :(得分:3)
没有用于执行此类解析的Java库。对这种小众产品进行逆向工程Excel以涵盖所有测试用例将非常耗时。
由于.net将转换100%的测试用例,我建议您关注calling .Net in your Java application。
答案 2 :(得分:2)
是否有图书馆,或者我们是否必须自己开发?
检查ExtenXLS,Java Spreadsheet SDK或其开源版本OpenXLS(在GPLv.3下)。关于OpenXLS:
OpenXLS是开源版本 ExtenXLS - 领先的Java 电子表格SDK。
OpenXLS是一种无风险的嵌入方式 高级Java电子表格 应用程序中的功能。
采用相同的工业强度代码 作为ExtenXLS3,OpenXLS是坚如磐石的 给你的Java的表演者 应用电子表格 用户需要的功能 - 和 一些!
为您的用户提供商业智能 格式的应用程序和报告 他们知道和爱,完成 图表,图像,VB代码和所有 Excel的功能完好无损。
我快速浏览了一下API,发现这个FormatHandle#convertFormatString(String)
将Excel样式的格式字符串转换为Java格式字符串。
我不知道它是否符合您的约束,但它绝对是一个严肃的产品。
答案 3 :(得分:1)
表示十进制格式,包括语言环境和其他内容:
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
您可以使用自己的自定义DecimalFormatSymbols调整decimalFormat输出。可以设置用于表示NaN的字符串以及更多。
http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormatSymbols.html
表示日期格式:
http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/
用于JFormattedTextField
http://www.java2s.com/Code/Java/Swing-JFC/Formatted-TextField.htm
文字格式
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
答案 4 :(得分:0)
(现在在你的问题中引用我的第一个时添加另一个答案)
似乎这样的设施不存在。您可以探索的一件事是自己创建它。您可以使用JavaCC自己表达这些格式,以及它们如何最终映射到典型的Java对象。 JavaCC绝对能够让您使用自己的格式字符串。
也许这很适合作为NumberFormat的实现