使用Apache POI确定已安装的Microsoft Excel版本?

时间:2010-04-29 14:45:50

标签: java apache excel apache-poi

我需要确定在Windows PC上安装了哪个版本的Microsoft Excel。我正在使用Apache POI,但无法找到一种简单的方法。

任何人都知道Apache POI是否具有内置功能来执行此操作?有任何想法如何使用Java代码?

3 个答案:

答案 0 :(得分:4)

POI提供了一种在不使用任何Excel API的情况下编写Excel文档的机制。我怀疑它有一种检测已安装版本的机制,因为它不依赖于已安装的Excel版本。

遵循类似于this question about detecting the Excel version in .NET中描述的模式,您可以使用JACOB来检测已安装的Excel版本,如下所示:

ActiveXComponent xl = new ActiveXComponent("Excel.Application");
try {
    xl.getProperty("Version");
} finally {
    xl.invoke("Quit", new Variant[] {});
}

答案 1 :(得分:3)

我真的,真的不认为POI有这个功能,因为它明确写入跨平台工作。它只处理文档文件。

如果我遇到这个任务,我会深入研究注册表(通过Windows API)以获取.XLS文件类型的关联。那样,错误应该为您提供最近和完全安装的Excel的链接。不可靠,因为

  • 可能 安装了Excel;
  • 用户可能已经更改了关联;或
  • 协会指出的Excel可能会被破坏。

但是考虑到(通常)适用的可执行文件的提示,您可以检查Excel的.EXE文件头或周围文件中的某些内容以确定Excel的版本。

答案 2 :(得分:0)

好吧,我刚刚发现旧的Microsoft Excel版本有文件扩展名.xls而新的版本有.xlsx。

我可以直接获取文件的引用并获取文件扩展名......这很简单。

如果有人有更好的解决方案,请告诉我。