我一直在关注下面列出的这些链接,我找到了编写这个 SMALL 创建 Excel 和下载功能的最佳方法。(使用 EPPlus for Excel)
- 使用 FileResult 在 Asp.Net MVC 中下载任何类型的文件?+如何在 C# 中将 Stream 转换为 byte[]?
- 在 ASP.NET MVC 3 中使用带有 MemoryStream 的 FileStreamResult
- 为 ASP.NET MVC 编写自定义文件下载操作结果
每次我运行它时它都会完美地运行代码而不会出错,但不会“踢出”要下载的文件(在另存为对话框或 w/e 中)。
public ActionResult ShowReport()
{
using (var stream = new MemoryStream())
{
ExcelPackage pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Sample1");
ws.Cells["A1"].Value = "Sample 1";
ws.Cells["A1"].Style.Font.Bold = true;
var shape = ws.Drawings.AddShape("Shape1", eShapeStyle.Rect);
shape.SetPosition(50, 200);
shape.SetSize(200, 100);
shape.Text = "Sample 1 text text text";
var fileDownloadName = "sample.xlsx";
var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";//System.Net.Mime.MediaTypeNames.Application.Octet
var fileStream = new MemoryStream();
pck.SaveAs(fileStream);
fileStream.Position = 0;
var fsr = new FileStreamResult(fileStream, contentType);
fsr.FileDownloadName = fileDownloadName;
byte[] fileBytes = ReadToEnd(fileStream);
string fileName = "example";
return File(fileBytes, contentType, fileName);
}
}
我做错了什么/错过了什么?- 我必须自己写那个对话吗?
PN:我也尝试过这种方式
byte[] fileBytes = ReadToEnd(fileStream);
string fileName = "example";
return File(fileBytes, contentType, fileName);
当然,我必须弄清楚如何将 Stream 转换为 Byte,但它也没有显示任何内容。
Chrome 网络开发工具 的图片 如果您在支持的浏览器中,对于小图片(如果您看不到它,请使用 ctl+MouseWheel 滚动),我们深表歉意。