2010-04-29 36 views
0

我需要確定在Windows PC上安裝了哪個版本的Microsoft Excel。我正在使用Apache POI,但無法找到一個簡單的方法來做到這一點。確定使用Apache POI安裝的Microsoft Excel版本?

任何人都知道Apache POI是否具有內置功能來執行此操作?任何想法如何使用Java代碼做到這一點?

回答

0

好吧,剛剛發生在我身上的是舊的Microsoft Excel版本的文件擴展名爲.xls,而新的版本有.xlsx。

我只能得到該文件的參考並獲得文件擴展名......這很容易。

如果有人有更好的解決方案,請讓我知道。

+1

你意識到這可能是舊版本的Excel中打開,閱讀並使用兼容包在此處修改.xlsx文檔:http://support.microsoft.com/kb/924074 – ig0774 2010-04-29 15:03:27

3

我真的,真的不認爲POI具有這種功能,因爲它明確寫入跨平臺工作。它只處理文檔文件。

如果我面對這個任務,我會深入研究註冊表(通過Windows API)關聯.XLS文件類型。那樣會犯錯,應該給你一個鏈接到最近安裝完畢的Excel。不可靠,因爲

  • 有可能沒有安裝了Excel;
  • 用戶可能已經改變了關聯;或
  • 該協會指出的Excel可能會被破壞。

但考慮到(通常情況下)適用的可執行文件的提示,然後你可以選擇要檢查的Excel中.EXE文件頭或者是一些在周圍文件,以確定Excel的版本。

4

POI提供了一種在不使用任何Excel API的情況下編寫Excel文檔的機制。我懷疑它有檢測安裝版本的機制,因爲它不依賴於安裝的Excel版本。

根據類似於在this question about detecting the Excel version in .NET描述的一個模式,你可以使用JACOB檢測,像這樣安裝的Excel版本:

+0

現在很流暢,+1!作爲一個Windows的仇敵,我從來沒有想過使用COM這種東西。 – 2010-04-29 15:07:51

+0

祝賀1000 :) – 2010-04-29 17:47:34

+0

@Carl Smotricz:謝謝! – ig0774 2010-04-30 00:15:38