Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 以编程方式标识Excel版本_.net_Vb.net_Excel - Fatal编程技术网

.net 以编程方式标识Excel版本

.net 以编程方式标识Excel版本,.net,vb.net,excel,.net,Vb.net,Excel,我的VB.NET(3.5)应用程序生成Excel报告 较新版本的Excel支持该文件格式,而较旧版本不支持 我希望我的应用程序能够识别本地计算机上安装了哪个版本的Excel,并使用不同的方法生成报告(较新版本:通过生成XML文件。较旧版本:通过利用Excel自动化) 如何识别本地计算机上安装的Excel版本?您可以查看以下注册表项之一: HKEY_USERS\.DEFAULT\Software\Microsoft\Office\11.0\Excel HKEY_CURRENT_USER\Soft

我的VB.NET(3.5)应用程序生成Excel报告

较新版本的Excel支持该文件格式,而较旧版本不支持

我希望我的应用程序能够识别本地计算机上安装了哪个版本的Excel,并使用不同的方法生成报告(较新版本:通过生成XML文件。较旧版本:通过利用Excel自动化)


如何识别本地计算机上安装的Excel版本?

您可以查看以下注册表项之一:

HKEY_USERS\.DEFAULT\Software\Microsoft\Office\11.0\Excel 
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel
您应该查找是否存在该键,其中包含“Excel”,因为您可以安装office 2003,而不使用visio 2007,因此这两个键都存在,但只有一个键具有Excel子键:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0
编号/版本对应

  • 办公室9:2000办公室
  • Office 10:Office XP(支持XML格式工作表的第一个版本)
  • 办公室11:办公室2003
  • 办公室12:2007办公室
  • Office 14:Office 2010(有趣的事实,跳过了13)

您可以打开Excel实例并检查版本:

Dim appExcel As Object
appExcel = CreateObject("Excel.Application")
With appExcel
    Debug.Print(Val(.application.version))
    .quit()
    appExcel = Nothing
End With

这是一个好的开始!在这台机器上,我有Visio2003和Excel2002。我看到HKEY\U CURRENT\U USER\Software\Microsoft\Office\10.0\Excel存在,但HKEY\U CURRENT\U USER\Software\Microsoft\Office\11.0\Excel不存在。这是正确的答案。使用注册表是不可靠的。