【发布时间】:2015-07-29 05:59:46
【问题描述】:
我需要确定 Windows PC 上安装了哪个版本的 Microsoft Excel。我正在使用 Apache POI,但想不出一个简单的方法来做到这一点。
有人知道 Apache POI 是否具有执行此操作的内置功能?任何想法如何使用 Java 代码做到这一点?
【问题讨论】:
标签: java apache excel apache-poi
我需要确定 Windows PC 上安装了哪个版本的 Microsoft Excel。我正在使用 Apache POI,但想不出一个简单的方法来做到这一点。
有人知道 Apache POI 是否具有执行此操作的内置功能?任何想法如何使用 Java 代码做到这一点?
【问题讨论】:
标签: java apache excel apache-poi
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[] {});
}
【讨论】:
我真的,真的不认为 POI 有这个功能,因为它被明确编写为跨平台工作。它只处理文档文件。
如果我面临这个任务,我会深入研究注册表(通过 Windows API)来关联.XLS 文件类型。这样,err 应该会为您提供一个指向最新且完全安装的 Excel 的链接。不可靠,因为
但考虑到(通常)适用的可执行文件的提示,您可以检查 Excel 的 .EXE 文件头或周围文件中的某些内容以确定 Excel 的版本。
【讨论】:
好吧,我突然想到旧的 Microsoft Excel 版本的文件扩展名为 .xls,而新版本的文件扩展名为 .xlsx。
我可以获取文件的引用并获取文件扩展名……就这么简单。
如果有人有更好的解决方案,请告诉我。
【讨论】: