在导出数据到EXCEL文件后,送到客户端时,出现"打开"或"保存"的提示框,如果客户端是XP的系统,直接点打开时,会出现
"无法找到C:\Documents and Settings\Qiuwenyan\Local Settings\Temporary Internet Files\Content.IE5\45WPQ7KH\文件名[1].xls,请检查文件名的拼写,并检查文件位置是否正确"
的错误提示,无法打开EXCEL文件.经查,是因为EXCEL是想到IE的临时目录中去找那个EXCEL文件的副本打开,但是此EXCEL的副本并非网页中的一部分,因此它不会被保存到IE的临时目录中,从而导致了此错误.求解决方案.PS:在其他的操作系统系统下未发现此问题.
   如果点对话框中的"保存"按钮,将EXCEL文件保存到本地再打开,也不会出现任何问题.

解决方案 »

  1.   

    PS:   在清空过IE的临时文件后,打开的第一个EXCEL文件可以.以后的就不行了,改文件名也没有用.
      

  2.   

    Dim filename As String = "1.xls"
                If filename <> "" Then
                Dim path As String = Server.MapPath(filename)
                Dim file As System.IO.FileInfo = New System.IO.FileInfo(path)
                If file.Exists Then
                    Response.Clear()
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name)
                    Response.AddHeader("Content-Length", file.Length.ToString())
                    Response.ContentType = "application/octet-stream"
                    Response.Filter.Close()
                    Response.WriteFile(file.FullName)
                    Response.End()
                Else
                    Response.Write("This file does not exist.")
                End If
            End If你用这个试下,我这没问题
      

  3.   

    呵呵,忘了说了,我保存时,没有在服务器端生成磁盘文件..是这样做的:DataGrid oDg=new DataGrid();
    oDg.DataSource=oDs;
    oDg.DataBind();
    Page.Response.ContentType ="application/vnd.ms-excel";
    Page.Response.Charset = "gb2312";
    Page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
    Page.Response.AddFileDependency("Report.xls");
    Page.Response.AppendHeader("Content-Disposition", "attachment;filename=Report.xls");
    Page.Response.ContentType ="application/vnd.ms-excel";
    Page.Response.Charset = "gb2312";
    Page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
    Page.Response.AddFileDependency("Report.xls");
    Page.Response.AppendHeader("Content-Disposition", "attachment;filename=Report.xls");
    System.IO.StringWriter tw=new System.IO.StringWriter();
    HtmlTextWriter hw=new HtmlTextWriter(tw); oDg.RenderControl(hw);
    Page.Response.Write(tw.ToString());
    Page.Response.End(); oDg.Dispose();
      

  4.   

    PS:  也就是说,我的方式是直接将文件发到客户端去,而不是先保存到服务器端生成文件,再用window.open的方式去打开(这样做我试过,是没问题的,但会生成很多垃圾文件喔).
      

  5.   

    我的也是XP,测试后没有你说的问题,是可以正常打开保存的。
    你的IE是6.0么,如果不是,那升级一下看看。
      

  6.   

    经测试,如果直接将XLS文件不保存到服务器端,而是直接发送到客户端,在XP的系统下,会出现无法将文件保存到本地的现象,从而导致文件打开失败. 
     解决的办法是:先将文件存到服务器端,然后象打开页面一样"window.open(文件名)"即可.