所有
如何下载文件,以便用户看到文件正在下载(例如流)?
我当前正在使用ClosedXML,但是如果使用SaveAs方法,则必须提供一个硬编码的URL,如果仅提供文件名,它不会自动下载到下载文件夹中。
下面的方法很好用,但是我必须创建自己的基于HTML的excel文件,并且文件的增长幅度超出了应有的程度,当我使用ClosedXML时,该文件的大小仅占文件大小的50%或更小下面的代码:但是,下载行为是我希望的样子。
有没有一种方法可以转换下面的代码,以便可以将“工作簿”作为对象,而它只是下载此工作簿?
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
谢谢
该SaveAs()
方法支持流,因此我将ClosedXml工作簿作为流使用:
public Stream GetStream(XLWorkbook excelWorkbook)
{
Stream fs = new MemoryStream();
excelWorkbook.SaveAs(fs);
fs.Position = 0;
return fs;
}
然后下载文件:
string myName = Server.UrlEncode(ReportName + "_" + DateTime.Now.ToShortDateString() + ".xlsx");
MemoryStream stream = GetStream(ExcelWorkbook);
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=" + myName);
Response.ContentType = "application/vnd.ms-excel";
Response.BinaryWrite(stream.ToArray());
Response.End();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句