Chi*_*ins 17 c# asp.net asp.net-mvc epplus
所以我正在使用花哨的EPPlus库来编写Excel文件并将其输出给用户下载.对于以下方法,我只是使用一些测试数据来最小化代码,然后我将添加我以后用于连接数据库的代码.现在我可以下载一个文件了,但是当我打开文件时,Excel会抱怨它不是一个有效的文件而且可能已损坏.当我去查看文件时,它说它大了0KB.所以我的问题是,我哪里错了?我假设它与MemoryStream有关.之前没有做过很多关于流的工作,所以我不确定在这里使用什么.任何帮助,将不胜感激!
[Authorize]
public ActionResult Download_PERS936AB()
{
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 memorystream = new MemoryStream();
pck.SaveAs(memorystream);
return new FileStreamResult(memorystream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "PERS936AB.xlsx" };
}
Run Code Online (Sandbox Code Playgroud)
flo*_*psb 41
这就是我正在使用的 - 我已经使用了几个月了,并且没有遇到问题:
public ActionResult ChargeSummaryData(ChargeSummaryRptParams rptParams)
{
var fileDownloadName = "sample.xlsx";
var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
var package = CreatePivotTable(rptParams);
var fileStream = new MemoryStream();
package.SaveAs(fileStream);
fileStream.Position = 0;
var fsr = new FileStreamResult(fileStream, contentType);
fsr.FileDownloadName = fileDownloadName;
return fsr;
}
Run Code Online (Sandbox Code Playgroud)
我注意到的一件事就是你没有将文件流位置重置为0.
| 归档时间: |
|
| 查看次数: |
22593 次 |
| 最近记录: |