.net的程序 做了一个导出EXSEL功能。在本地运行OK,但是在客户的服务器上。导出功能出现
“检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。”错误
按网上的方法试了N次。。不行哈。求大神帮忙。  服务器运行环境。。WIN 2008 OFFICE 2010 VS 2010 IIS7

解决方案 »

  1.   

    NET导出Excel遇到的80070005错误的解决方法: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005基本上.net导出excel文件,都需要如此配置一下,不配置有的时候没错,而配置后基本应该不会出错。 具体配置方法如下:  1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"  3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置" 4:在"DCOM配置"中找到"Microsoft  Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框  5:点击"标识"标签,选择"交互式用户"  6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK  SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.  7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK  SERVICE"用户,然后赋予"本地访问"权限.  8.如果交互式用户设置后出现错误8000401a,可取消交互式用户,指定为administratr,可暂时解决此问题。进一步的解决方式还有待探讨。  9.采用第8点的设置后,打开Excel可能会出现“无法使用对象引用或链接”,并且不能进行单元格粘贴。原因不明,取消设置后即可消失。  另外说明:光按以上设置并不能完全保证不出问题,因为调用OFFICE的操作可能涉及其他的系统资源,很可能依然权限不够而导致问题,只是设置EXCEL应用程序后,还是可能会报80070005的错误,最保险的是应该在dcomcnfg中选中我的电脑然后右键属性->com安全,将里面的访问权限,启动和激活权限全都编辑默认,在当中加上network service(iis 5.0的话,要加的是asp.net用户),并如前面对networkservice设置上相同的权限,这样基本上能保证不会再出什么问题。以上为基本出路方法,但是我也遇到过应用以上方法还是报错的情况,我的环境是windows2003 + office2003+office2007,在测试服务器上都可以导出无任何问题!但是更新了正式环境就是报错,权限都设置了还是报错,因为我的测试服务器是默认office启动的,所以我怀疑是office版本环境问题!于是我卸载了office2007,马上测试ok了,但是重启服务器后就产生了have not been Pre-compiled错误,导出页面都无法打开了,于是我又重新安装了office2007,页面可以打开了,但是导出excel时又开始报错!我又把所有的权限重新设置一遍,问题依旧!后来发现两个服务器默认打开excel的程序不一样,测试环境是默认office2003打开,正式环境是office2007打开,于是我在正式环境重新注册office2003,使其同样也是默认office2003打开程序,靠!问题终于解决了!!!注册方法 执行    开始----运行----输入excel2003的安装路径,例如 "C:\Program Files\Microsoft Office\OFFICE11\excel.exe" /regserver    注意/符号前面有一个空格,其中"C:\Program Files\Microsoft Office\OFFICE11\excel.exe" 是excel2003的安装程序的路径,参数regserver表示注册的意思!运行后,会启动Office 2003的安装程序,进行修复,重新注册。excel2007为默认的启动程序的方法类同,可以执行   开始----运行----"D:\Program Files\Microsoft Office\Office12\excel.exe" /regserver
    转.................
      

  2.   

    http://www.cnblogs.com/petitprince/archive/2010/08/20/1804360.html
    win8  没有win7有个
      

  3.   

    用NPOI试试吧,不用那么麻烦,直接用引用即可
      

  4.   

    iis 没有com组件的权限,通过 dcomcnfg 给予权限。
      

  5.   

    换了吧 用office 导excel要服务器装excel 处理不好还会产生一堆excel进程 用NPOI 或者 myxls吧  都挺简单易用的
      

  6.   

    导出难道非得要组建?
      gvUsbUseUser.DataSource = dt2;
      string srcPath = "xxx.xls";
                FileInfo fileInfo = new FileInfo(srcPath);
                Response.Clear();
                Response.Buffer = true;
                HttpContext.Current.Response.Write("<meta   http-equiv=Content-Type   content=text/html;charset=UTF-8>");  //编码
                string fileName = HttpUtility.UrlEncode(srcPath + ".xls", Encoding.GetEncoding("UTF-8"));//编码
                HttpContext.Current.Response.AddHeader("content-disposition",
                "attachment;filename=" + fileName);
                Response.ContentType = "application/vnd.xls";
                System.IO.StringWriter stringWrite = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
                               sgvAUOlocality.AllowPaging = false;//分页false                sgvAUOlocality.DataBind(); //查询数据的方法
                    sgvAUOlocality.RenderControl(htmlWrite);//gvUsbUseUser控件名 USB使用用户
                    Response.Write(stringWrite.ToString());
                    Response.End();
                    sgvAUOlocality.AllowPaging = true;//分页true
                
    测试过没问题
      

  7.   

    额,权限的问题
    在计算机中开始->cmd->dcomcnfg打开组件服务->我的电脑->DCOM配置->Microsoft Excel Application->属性->安全->在安全目录下的三个选项->编辑->添加EveryOne->允许下都打勾
      

  8.   

    用NPOI导出吧 用office导出对服务器要求要安装excel··
      

  9.   

    我也出现了类似的问题,应该怎么解决啊
    //导出为Excel
    function ExportExcel()

       var delID = document.all.hid_clickedTreeID.value;
       if(delID=="null" || delID==""){alert("<%=strNoOutTable%>");return false;}
    //alert(typeof(EXPORT_OBJECT)); if(typeof(EXPORT_OBJECT)!="object")
    {
    document.body.insertAdjacentHTML("afterBegin","<OBJECT style='display:none' classid=clsid:0002E510-0000-0000-C000-000000000046 id=EXPORT_OBJECT></Object>");
    }

    with (EXPORT_OBJECT)
    {
    DataType = "HTMLData";
    HTMLData=document.all.divSummaryResult.outerHTML;
    //alert(HTMLData);

    //ActiveSheet.Export("C:\\<%=strNoTitle%>.xls", 1);
    try{
    ActiveSheet.Export("C:\\<%=strNoTitle%>.xls", 1);
    alert('<%=strOutSuccess%>');
    }
    catch (e){
    alert(e);

    }

    }
    }
    alert(e);
    提示说 [objext Error]