Gridview导出Excel的问题:
  单击打开后,在Excel中弹出对话框
    无法找到“C:\Documents and Settings\Administrator\Local Settings\Teporary Internet Files\Content.IE5\ENWZGHW9\Excel[1].xls”.
   但是如果点击保存就可以正常打开,打开后的Excel和GridView中的内容和样式都是一样的。
   请高手指点!

解决方案 »

  1.   

    你导出EXCEL时, 请在站点里指定一个临时文件夹用于存放生成的文件, 不要放在默认文件夹里,这会受到OS的权限影响.如果直接 savefile('abc.xls') 就会保存在C:\Documents and Settings\Administrator\Local Settings\Teporary Internet Files\Content.IE5\ENWZGHW9\Excel[1].xls而 savefile('c:\aaa\abc.xls') 就会保存在指定地址.操作文件时,指定一个特定目录是一个好习惯.
      

  2.   

    不好意思, 上面说错. 不是服务器文件, 而是本地IE的缓存目录的问题 C:\Documents and Settings\Administrator\Local Settings\Teporary Internet Files\Content.IE5\ENWZGHW9\Excel[1].xls一般是保护的. 
      

  3.   

    本地IE的缓存目录的问题 C:\Documents and Settings\Administrator\Local Settings\Teporary Internet Files\Content.IE5\ENWZGHW9\Excel[1].xls 一般是保护的. 
      

  4.   

    我的代码。  
    protected void To_excel_Click(object sender, EventArgs e)
        {
            GridViewAllInfo.AllowPaging = false;
            GridViewAllInfo.AllowSorting = false;
            UserAllInfo(); //绑定gridview的方法
            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment; filename=Excel.xls;");
            Response.ContentType = "application/excel";        StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            GridViewAllInfo.RenderControl(htw);        Response.Write(sw.ToString());
            Response.End();
        }
    Excel的直接打开的保存位置不知道在哪里改,所以savefile()的代码加在哪里!!!谢谢
      

  5.   

    我在朋友的机器上运行了,什么问题都没有。说明我的IE缓存有问题了。
    但是我在自己机器上又重新做了一个小程序绑定gridview,再导出Excel就成功了。百思不得其解啊!
      

  6.   

    Response.Write(sw.ToString()); 你其实是把它写在当前页面了,这个没问题的. 我开始没看清,以为你是写在服务器硬盘上.你的问题其实是出在访问端, 是该IE缓存区不允许访问而已. 因为你的文件类型是excel.
    可以先尝试换掉文件类型看看, 比如用text/html, 文件名也写成.htm  如果这样可以直接打开就能证实这一点.建议修改修改IE的缓存目录的位置, 或者把IE升级试试.