采用如下方式使aspx页面在使用IE访问时自动调用Excel打开,即打开的页面成为一个Excel文件。
在@page指令行加入contentType="application/vnd.ms-excel; charset=gb2312"
运行程序,前几次没有问题,今天再打开时突然弹出对话框,提示如下错误:Microsoft Excel不能访问文件“http://文件地址”。可能原因有:
*指定的文档名称或路径不存在。
*所要打开的文档被其他程序占用。切换到相应程序,关闭文档后再试。
*所要保存的工作簿的名称与另一个只读文档同名。请用其他名称保存文档。根据提示,清空了IE的临时文件夹和历史记录,关掉了.NET2003,再试,还是相同的提示。
1、文件肯定存在
2、.NET2003已经关掉了,没有其他程序占用该aspx文件了,而是我是刚刚重启了机器。
3、我没有保存该页面,即使IE临时保存,我也清空了IE的临时文件夹。所以,狠奇怪,不知道是怎么回事。请各位大侠不吝赐教。100分伺候。

解决方案 »

  1.   

    我想,你这样的写法可能是不妥的。你应在后台执行这一个过程,而不是把contentType="application/vnd.ms-excel; charset=gb2312"
    直接加在PAGE指令中。请参考其他人在后台输出EXCEL页面的语句尝试一下。
      

  2.   

    有道理,先获取EXCEL文件数据流,然后用Response.BinaryWrite(excelfile)方法写到web
      

  3.   

    Response.ContentType = "application/vnd.ms-excel"; 还是写到程序代码中好一点
      

  4.   

    按照诸位所说,将Response.ContentType = "application/vnd.ms-excel";写到程序中,还是一样的提示,不过点击提示框的确认按钮之后,页面还是可以正常显示出来的。到底是怎么回事呢?
      

  5.   

    而且,把Response.ContentType ="application/vnd.ms-excel";写道pageload函数中之后,怎么我发现pageload函数执行了2遍?!难道这样需要2次load页面么?
      

  6.   

    诸位,我采用
    Response.AddHeader("Content-Disposition", "inline; filename=Score.xls"); 
    Response.ContentType = "application/ms-excel"; 
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
    Response.Write(sw); 
    Response.End(); 方法,形成Excel格式的页面,可是现在还有2个问题
    1、如果合并单元格,控制格式?
    2、我这个页面填写了数据之后还要提交的,如何提交吖?
      

  7.   

    当你的页面使用Response.ContentType = "application/ms-excel"; 这样的方式改变页面的头部标志之后,此页面不再响应通常 的HTML事件.
    所以你在此页面中填写了数据之后,已经无法提交了.
      

  8.   

    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;311452
    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;304562
    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;304643
    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;304662