我需要确定在Windows PC上安装了哪个版本的Microsoft Excel。我正在使用Apache POI,但无法找到一种简单的方法。
任何人都知道Apache POI是否具有内置功能来执行此操作?有任何想法如何使用Java代码?
答案 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的.EXE
文件头或周围文件中的某些内容以确定Excel的版本。
答案 2 :(得分:0)
好吧,我刚刚发现旧的Microsoft Excel版本有文件扩展名.xls而新的版本有.xlsx。
我可以直接获取文件的引用并获取文件扩展名......这很简单。
如果有人有更好的解决方案,请告诉我。