用途是点击按钮后把XLS文件复制到本机的程序目录下,然后再读取其中的sheet 动态加到下拉框中给选择。
我在本机直接调试 没有任何问题,可以动态添加。但在iis启动下,通过IP访问这个程序,运行到这里的时候就会报错, 报system.exception也不太清楚是什么错。
只是觉得  Workbooks.Open 打不开Xls文件,难道在iis启动下的页面,Workbooks.Open无法访问程序目录下的文件吗?只有换其他方法才可以吗?有解决办法或其他方法的,各位提示下,谢谢
protected void Button1_Click(object sender, EventArgs e)
    {
              
        if (this.fud1.HasFile)     //如果用户确实选择了上传控件的浏览按钮,浏览文件成功.
        {
            this.fud1.SaveAs("./temp/" + this.fud1.FileName);  //保存到服务器的目录
            filename = Server.MapPath("./temp/" + fud1.FileName);//获的路径名称
                    }
        try
        {
           Excel.ApplicationClass oe  = new Excel.ApplicationClass();
            Excel.Workbook wb = oe.Workbooks.Open(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
            foreach (Excel.Worksheet sheet in wb.Sheets)
            {
                this.ddl1.Items.Add(new ListItem(sheet.Name, sheet.Name));//动态的把SHEET加到下拉框中
            }
            oe.Workbooks.Close();
           
            
        }        catch
        {
            Exception ex = new Exception();
             this.lbl2.Text = ex.Message.ToString();// 把错误报告显示出来

        }

解决方案 »

  1.   

    权限不够的
     设置excel的DCOM权限
      

  2.   

    把你的try,catch去了.看看报的什么错
      

  3.   

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。 ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
      

  4.   

    去掉后 提示错误是上面的,然后错误代码是行 是这个高亮oe  = new Excel.ApplicationClass();