我有一个ASP.NET页面,用户在其中提供一个ID,然后我们从DB中提取一些数据并将其放入Excel电子表格中。我想在内存中创建Excel文件,然后允许用户下载该文件。我可以在服务器上创建一个文件,然后删除它,但这似乎是不必要的。根据错误处理的不同,我可能会使用这种方法孤立一个文件,等等。这种事有可能发生吗?或者,我是否需要使用文件流?顺便说一句,我使用EPPlus作为API(快速插件)。
bmvo0sr51#
您希望指定Content-Type和Content-Dispisition头文件,如so -Response.ContentType = "application/vnd.ms-excel" works in IE and firefox but not in Safari,然后流式传输文件。完成后,调用Response.End()停止应用程序的执行。代码样本:
Content-Type
Content-Dispisition
Response.End()
void StreamExcelFile(byte[] bytes) { Response.Clear(); Response.ContentType = "application/force-download"; Response.AddHeader("Content-Disposition", "attachment; filename=name_your_file.xls"); Response.BinaryWrite(bytes); Response.End(); }
字符串
kpbwa7wx2#
ExcelPackage pck = new ExcelPackage(); ..... ..... ..... byte[] bfr = pck.GetAsByteArray(); Response.ContentType = "application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AppendHeader("content-disposition", "attachment; filename=ExcelFileName.xlsx"); Response.OutputStream.Write(bfr, 0, bfr.Length); Response.Flush(); Response.Close();
yvfmudvl3#
是的,请研究使用HTTP处理程序将文件从内存流传输到浏览器。http://msdn.microsoft.com/en-us/library/ms972953.aspx
zte4gxcn4#
您要查找的内容称为泛型处理程序:http://www.dotnetperls.com/ashx简而言之,您需要做的是定义上下文类型。在您的情况下,将是一个xls或xlsx。设置响应,并将用户定向到处理程序。系统将提示用户下载文件。
4条答案
按热度按时间bmvo0sr51#
您希望指定
Content-Type
和Content-Dispisition
头文件,如so -Response.ContentType = "application/vnd.ms-excel" works in IE and firefox but not in Safari,然后流式传输文件。完成后,调用Response.End()
停止应用程序的执行。代码样本:
字符串
kpbwa7wx2#
字符串
yvfmudvl3#
是的,请研究使用HTTP处理程序将文件从内存流传输到浏览器。
http://msdn.microsoft.com/en-us/library/ms972953.aspx
zte4gxcn4#
您要查找的内容称为泛型处理程序:
http://www.dotnetperls.com/ashx
简而言之,您需要做的是定义上下文类型。在您的情况下,将是一个xls或xlsx。设置响应,并将用户定向到处理程序。
系统将提示用户下载文件。