2010-07-30 32 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

相關問題