web开发一程序
想实现如下功能
在某页面中,点Button,弹出对话框,可以直接打开,或者保存服务器某文件夹下的excel文件到本地
请给点具体代码参考

解决方案 »

  1.   

    新建一个页面,如DownFile.aspx
    在DownFile.aspx页面的PageLoad里写如下代码 protected void Page_Load(object sender, EventArgs e)
            {
                string strUrl = HttpUtility.UrlDecode(Request.QueryString["url"], System.Text.Encoding.UTF8).Replace("/","\\");
                if (File.Exists(strUrl))
                {
                    string strFile = strUrl.Substring(strUrl.LastIndexOf("\\") + 1);                FileStream fileStream = new FileStream(strUrl, FileMode.Open);
                    long fileSize = fileStream.Length;
                    Context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(strFile, System.Text.Encoding.UTF8));
                    Response.Charset = "";// "GB2312";
                    Response.ContentEncoding = System.Text.Encoding.UTF8;
                    Response.ContentType = "application/octet-stream";
                    byte[] fileBuffer = new byte[fileSize];
                    fileStream.Read(fileBuffer, 0, (int)fileSize);
                    fileStream.Close();
                    Response.BinaryWrite(fileBuffer);
                    Response.Flush();
                }
                else
                {
                    this.RegisterClientScriptBlock("a", "<script>window.close();</script>");
                }
            }点下载时js代码
    // 下载已经上传的excel附件
            function DownAtt(url)
            {           
               window.open("DownFile.aspx?url=" +url);
            }
      

  2.   

    我用你这个代码下载下来的excel文件,内容多了,本来我只有5条记录,结果变成了 80多条,而且每次的条数还不一样
      

  3.   

    是你保存在服务器上的excel就有重复,和下载应该没关系,
    你可以查看一下服务器上的excel文件
      

  4.   

    string filePath ="";
    FileInfo Fi = new FileInfo(filePath);
    if (Fi.Exists)
    {
      FileStream fs = new FileStream(filePath, FileMode.Open);
      byte[] bytes = new byte[(int)fs.Length];
      fs.Read(bytes, 0, bytes.Length);
      fs.Close();
      Response.ContentType = "application/octet-stream";
      Response.AddHeader("Content-Disposition", "attachment; filename=1.excel");
      Response.BinaryWrite(bytes);
      Response.Flush();
      Response.End();
    }
    string path = Server.MapPath("~/") + "";
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(obj.Name, System.Text.Encoding.GetEncoding("utf-8")));
    Response.ContentType = "application/octet-stream";
    Response.WriteFile("" + path + "");
    Response.End();检查数据源