gpt4 book ai didi

c# - ASP.NET MVC EPPlus 下载 Excel 文件

转载 作者:IT王子 更新时间:2023-10-29 04:52:53 26 4
gpt4 key购买 nike

所以我正在使用花哨的 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" };
}

最佳答案

这是我正在使用的 - 我已经使用它几个月了,没有遇到任何问题:

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;
}

我马上注意到的一件事是您没有将文件流位置重置回 0。

关于c# - ASP.NET MVC EPPlus 下载 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com