2010-07-30 72 views
9

对于一些源一起拖动数据,并做了一些计算本身,我们希望提供用户使用自己的格式字符串的可能性,并希望他们从Excel知道这恰好格式字符串语法(如"$ "#,###.,0)的Java应用程序与.netAnalysis Services中使用的相同。是否有任何地方提供支持Excel格式字符串的Java库?

我在Java中使用的最接近的东西是DecimalFormat,它缺少一些功能(例如,通过将千位分隔符放在最后,浮点数NaN和无穷大显示不同等等,从而实现了数千和数百万的格式化。 ,并可能根据地区不同,会有一些额外的小差异。

现在,只需将数字格式就足够了。或许日期和字符串格式化将成为未来的一个要求。

有一个图书馆,或者我们是否必须自己开发?

我无法想象我们是唯一有此问题的人。

Noel M建议的POI似乎没有提供解决方案。任何其他想法?

回答

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格式字符串

我不知道它是否符合您的约束,但它绝对是一个严重的产品。

+0

这是最接近我在问我的问题时所预期的答案 - 即使我们不会使用它 - 因为许可证是GPL(因此在我们的商业产品中不可用)或者拥有商业许可证(对于我们将使用一个完整的电子表格库)。 – Frank 2010-08-16 07:03:11

3

Apache POI可能能够做你正在寻找的东西。

+0

我以为它只是管理MS Office文件。但也许副作用是数字格式。我会看一下。 – Frank 2010-07-30 14:29:14

+0

@Frank - HSSF是Excel的组件:http://poi.apache.org/spreadsheet/index.html – 2010-07-30 14:33:06

+0

POI似乎不能在这里提供帮助。据我所知,POI本身并不提供任何格式评估。它只是允许你定义格式,并将它们分配给单元格。显示字符串转换的实际数字似乎只能通过Excel完成,并且绝不会在POI本身中完成。 – Frank 2010-08-04 09:53:28

3

没有用于执行此类解析的Java的库。反向工程Excel覆盖所有测试用例对于这样的利基产品来说是非常耗时的。

由于.NET将转换的测试用例100%,我建议你专注于calling .Net in your Java application

+0

从Java调用.net是我们目前讨论的选项之一。但是,由于这是为了将应用程序部署到不同的客户,所以一个巨大的缺点是部署过程的复杂性增加。 – Frank 2010-08-12 15:18:15

0

(添加另一种答案是你现在所参考我先在你的问题)

看来,这样的设备不存在。你可以探索的一件事是自己创建它。您可以使用JavaCC自己表示这些格式,以及它们如何最终映射到典型的Java对象。 JavaCC肯定能够给你使用你自己的格式字符串的能力。

也许这会很好地适应为十进制格式的NumberFormat

+0

除了调用.net,这是我们正在讨论的另一种可能性。然而,我不确定解析一个格式字符串的简单任务,编译器生成器没有太多的开销,只要手动编码不会更容易,只要团队中没有人使用JavaCC。 – Frank 2010-08-12 15:22:00

+0

@Frank多么完美的简历增强学习机会! – 2010-08-12 15:36:43

1
+0

虽然JDK功能提供了格式化,但.net/Excel/AS格式有一些不同之处。我不确定尝试适应现有的功能是否会比从头开始完全开发格式化器更省力。 但是,我认为,看看现有的格式化程序可以给你一些想法,一个自定义类的好API可能看起来像。 – Frank 2010-08-12 15:28:14

相关问题