当前位置:编程学习 > C#/ASP.NET >>

asp.net中怎样检查电脑上所安装Excel的版,如Excel2003/Excel2007/Excel2010???

    我是想打开一个页面,就弹出一个提示框,要另存为excel,但是有时候计算机上装的excel版本不一样,所以输出的表头也不一样。有没有办法动态的检测出。。??
 下面是我在网上找的,不过报错阿。。
     public string GetOfficePath()
    {
        string strVersionResult = "没有安装Office";
        string path = "";
        Microsoft.Win32.RegistryKey regKey = null; 
        Microsoft.Win32.RegistryKey regSubKey = null;
        try
        {
            regKey = Microsoft.Win32.Registry.LocalMachine;
            for (int i = 8; i < 14; i++)
            {
                regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\" + i + @".0\Common\InstallRoot", false);
                path = regSubKey.GetValue("Path").ToString();
                if (regSubKey != null) 
                {
                    if (System.IO.File.Exists(path + "Excel.exe"))
                    {
                        switch (i)
                        {
                            case 8: return "office2000";
                            case 9: return "officeXP";
                            case 10: return "office2003";
                            case 11: return "office2007";
                            case 12: return "office2010"; 
                        }
                    }
                }
            }
        }
        catch(Exception ex)
        {
            throw new Exception("读取注册表出错!", ex); 
        }
        return strVersionResult;
    }
path = regSubKey.GetValue("Path").ToString();这里出错了。。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
高手们有没有另外好的办法阿,在线等。。 Excel C# --------------------编程问答-------------------- 不可以实现,你找的代码即便可以工作,判断的也是服务器端的。
出于安全的限制,浏览器不允许服务器程序访问客户端的文件系统和注册表。再说,通过浏览器访问你网站的不一定是装有Windows的PC,还可能是Linux、Mac OS甚至是装有iOS和Android的平板、手机、电视终端,这些设备哪有注册表呢? --------------------编程问答--------------------
引用 1 楼 devmiao 的回复:
不可以实现,你找的代码即便可以工作,判断的也是服务器端的。
出于安全的限制,浏览器不允许服务器程序访问客户端的文件系统和注册表。再说,通过浏览器访问你网站的不一定是装有Windows的PC,还可能是Linux、Mac OS甚至是装有iOS和Android的平板、手机、电视终端,这些设备哪有注册表呢?


那有没有别的办法实现。。?? --------------------编程问答--------------------
引用 2 楼 hanxiaoting520 的回复:
引用 1 楼 devmiao 的回复:
不可以实现,你找的代码即便可以工作,判断的也是服务器端的。
出于安全的限制,浏览器不允许服务器程序访问客户端的文件系统和注册表。再说,通过浏览器访问你网站的不一定是装有Windows的PC,还可能是Linux、Mac OS甚至是装有iOS和Android的平板、手机、电视终端,这些设备哪有注册表呢?

那有没有别的办法实现。。??


做一个ActiveX插件,但是这需要用户部署这个插件,并且只有Windows系统和兼容ActiveX的浏览器(比如IE)可以支持。 --------------------编程问答--------------------
引用 3 楼 devmiao 的回复:
引用 2 楼 hanxiaoting520 的回复:引用 1 楼 devmiao 的回复:
不可以实现,你找的代码即便可以工作,判断的也是服务器端的。
出于安全的限制,浏览器不允许服务器程序访问客户端的文件系统和注册表。再说,通过浏览器访问你网站的不一定是装有Windows的PC,还可能是Linux、Mac OS甚至是装有iOS和Android的平板、手机、电视终端,……


晕。。这么复杂阿。。而且还必须是IE,郁闷了。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,