我需要能够从我正在开发的一些.NET代码中检测我在我的机器上安装的Excel版本。我目前正在使用 Application.Version ,但它没有提供有关Service Pack的信息。
我最好避开这样的事情: http://www.mvps.org/access/api/api0065.htm
欢迎使用托管代码!
答案 0 :(得分:6)
Public Shared Function GetExcelVersion() As Integer
Dim excel As Object = Nothing
Dim ver As Integer = 0
Dim build As Integer
Try
excel = CreateObject("Excel.Application")
ver = excel.Version
build = excel.Build
Catch ex As Exception
'Continue to finally sttmt
Finally
Try
Marshal.ReleaseComObject(excel)
Catch
End Try
GC.Collect()
End Try
Return ver
End Function
如果找不到excel,则返回0。
答案 1 :(得分:2)
不幸的是,这种方法是唯一可靠的方法。甚至Microsoft suggests using a similar technique(这是手动检查,但概念相同)。
如果你想在托管代码中执行此操作,我建议只需从链接中移植代码,并在发布新的Service Pack时创建一个易于扩展的类。
答案 2 :(得分:2)
您可以在注册表中检查应用程序路径以获取exe的路径,然后获取其版本: 见http://www.codeproject.com/KB/office/getting_office_version.aspx
答案 3 :(得分:0)
虽然不健全,但这种方法是我所知道的唯一方法。
请注意,您无需检查完全匹配。您可以使用各个值的比较来查看您拥有的版本是SP1还是更新版本。你知道如果版本号大于或等于“11.0.6355.0”则更新(你需要实现比较)