日期:2014-05-18  浏览次数:20450 次

导入excel 关联了迅雷
在网上搜了, 然后也看了论坛一些其他的说法, 说是在一个新的页面打开, 可是为什么我在一个新的页面输出,迅雷下载的还是网页呢? 我的代码问题?
C# code
    public double zhk = 1;
    List<Product> pros = new List<Product>();
    protected void Page_Load(object sender, EventArgs e)
    {
            string vastr = Request["vastr"].ToString();
            List<Product> prosd = new List<Product>();
            if (vastr != "")
            {
                string[] ids = vastr.Split(',');
                for (int i = 0; i < ids.Length; i++)
                {
                    List<Product> pros = ProductService.GetAllProductById(ids[i].ToString());
                    if (pros.Count > 0)
                    {
                        Product pro = pros[0];
                        prosd.Add(pro);
                    }
                }
                ExportGridToExcel(prosd, "upxia.xls");
            }
            else
            {
                Response.Write("<script>alert('请选择您要导出的数据!');location='prozhan.aspx'</script>");
            }
        
    }

    private void ExportGridToExcel(List<Product> pros, string filename)
    {
        // 检查是否有文件名
        if (string.IsNullOrEmpty(filename))
        {
            throw new ArgumentException("Export filename is required");
        }
        // 检查是否是excel格式
        if (!filename.EndsWith(".xls"))
        {
            filename += ".xls";
        }

        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        //Response.Clear();
        //Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("content-disposition", "attachment;filename=" + filename);
        //Response.Charset = string.Empty;
        //Page.EnableViewState = false;
        //grid.RenderControl(hw);
        writeEc ec = new writeEc();
        hw.Write(ec.getEXCEL(pros, zhk));
        Response.Write(tw.ToString());
        Response.End();
    }

希望各位大大能帮我解决哈!

------解决方案--------------------
关注!
------解决方案--------------------
因为是动态下载,下载页面可能是 *.aspx 迅雷只能捕获到aspx,而无法知道这个页面下载什么内容.
可以尝试先将*.aspx中将要下载的内容写入一个临时文件夹,然后 客户端重定向到临时文件
------解决方案--------------------
TRY
Response.ContentType = "application/vnd.ms-excel";
===>
Response.ContentType = "application/octet-stream";

Response.Write(tw.ToString());
===>
把要下在的文件轉換成流
byte[] buffer = new byte[10240];
Response.OutputStream.Write(buffer,0,流的長度)
------解决方案--------------------
关注一下
------解决方案--------------------
接分.....
------解决方案--------------------
接分..... 
 

------解决方案--------------------
你输出在页面上,下载的当然是页面了,你必须把这个EXCEL文件的地址做成一个链接

点链接下载这个文件才行!

------解决方案--------------------
接分。。。
------解决方案--------------------
学习一下