2010-04-29 73 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