2011-09-11 36 views
0

下面的方法文件,基于代码this question,显示在浏览器中的文件下载对话框,但随后的下载永远不会启动(它停留在0%):下载一个字符串作为ASP.NET

protected void lnkExport_Click(object sender, EventArgs e) { 
    var bytes = Encoding.ASCII.GetBytes(SelectRecords()); //Data to be downloaded 
    Response.Clear(); 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=\"test.xls\""); 
    using (var stream = new MemoryStream(bytes)) { 
    Response.AddHeader("Content-Length", stream.Length.ToString()); 
    stream.WriteTo(Response.OutputStream); 
    } 
} 

不知道怎么回事?

+0

这不是一个Excel文件,你不应该撒谎说,这是。 – SLaks

+1

True,SelectRecords()实际返回一个HTML表格。然而,其目的是Excel应该打开它(可以),最简单的方法是给它一个.xls扩展名。 :) – James

+0

我相信这将导致Excel安全警告。 – SLaks

回答

3

你的代码工作对我很好,但你可能要尝试添加这是你的点击处理程序的最后一行:

Response.End(); 
+0

其实它是一个HttpModule尝试Gzip响应流,所以我不得不设置Response.Filter = null;和Response.ClearHeaders();不过,您的答案让我知道了,因为您说代码适合您! – James

相关问题