在vs2005中,如何检测本机office版本,因为写了一个导出到office2000的Excel的函数,如果当前安装的office版本是2003或者2007就报错,所以想通过不同的版本来调用不同的过程,在线等

解决方案 »

  1.   

    HKEY_LOCAL_MACHINE\Software\Microsoft\office\X.0(office版本号)
      

  2.   

    搜索注册表
    HKEY_LOCALE_MACHINE Software Microsoft Office
    看是否有12.0或11.0(分别对应2007和2003)
      

  3.   

    或者尝试实例化一个Word.ApplicationClass,然后获取其Version属性值
      

  4.   

    导出到Excel的操作,如果是一般的导出,可以不用Office的组件来导出,而是把Excel当做数据库来连接再向这个数据库插入数据就行了.这样就和Office的版本无关了.
      

  5.   

    shalen520(Love will keep us alive) 
    或者尝试实例化一个Word.ApplicationClass,然后获取其Version属性值
    ??
    问题是我当前的版本都不知道,根本就不知道应该添加哪个版本的组件,那则么能创建这个实例呢?编译都通不过啊?
      

  6.   

    用脚本可以,你使用webBrowser执行一下脚本就出来了<script>
    var a = new ActiveXObject("Word.Application")
    alert(a.Version)
    </script>
      

  7.   

    那你可以两种方法结合起来用嘛,就算有注册表值也不代表安装的office是ok的,只有能实例化word组件才能说office是ok的
      

  8.   

    不需要引用的版本来了……
    Type type;
    object excel;
    object version;type=Type.GetTypeFromProgID("Excel.Application");if(type==null)
    {
    MessageBox.Show("没有安装excel");
    }
    else
    {
    excel= Activator.CreateInstance(type);
    if(excel==null)
    {
    MessageBox.Show("创建对象出错");
    }
    else
    {
    version=type.GetProperty("Version").GetValue(excel,null);
    type.GetProperty("Visible").SetValue(excel,true,null);
    type.GetMethod("Quit").Invoke(excel,null);
    }
    }
    if(version!=null)
    {
    MessageBox.Show("Excel版本号是:" + version.ToString();
    }
      

  9.   

    jinta2001() Type type;
     需要什么引用?
      

  10.   

    不需要
    ??你不会没有引用System吧using System;
      

  11.   

    偶也试了用progid通过后期帮定的方式来实例化word,没有通过,Type.GetTypeFromProgID得到Type总是System._ComObject,得不到version值,而我的机器是装了office的.
      

  12.   

    好的,揭帖,谢谢大家,特别感谢jinta2001()