.NET Core 2 从内存流下载 Excel 文件
.NET Core 2 download Excel file from memory stream
我在一个 .NET Core 项目上工作,我应该从记录创建电子表格文件并下载它而不将其保存在服务器中。搜索上面的标题并没有多大帮助,但给出了一些指导。此外,ASP.NET 中使用的大多数方法在 .NET Core 中都不起作用。所以,我终于想出了一个效果很好的解决方案。我将在下面的答案中分享给那些和我一样搜索的人。
首先,您需要安装 EPPlus.Core 包。如果你要通过 Package Manager Console
安装它,你可以这样做:
Install-Package EPPlus.Core
然后为 OfficeOpenXml
添加您的 using 语句:
using OfficeOpenXml;
下载文件的示例方法如下所示:
using OfficeOpenXml;
namespace MyProject.Controllers
{
public class SubscribersController : Controller
{
private readonly ApplicationDbContext _context;
public SubscribersController(ApplicationDbContext context)
{
_context = context;
}
public async Task<IActionResult> ExportToExcel()
{
var stream = new System.IO.MemoryStream();
using (ExcelPackage package = new ExcelPackage(stream))
{
var subscribers = await _context.Subscribers.ToListAsync();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Subscribers");
worksheet.Cells[1, 1].Value = "Name";
worksheet.Cells[1, 2].Value = "Email";
worksheet.Cells[1, 3].Value = "Date Subscribed";
worksheet.Row(1).Style.Font.Bold = true;
for (int c = 2; c < subscribers.Count + 2; c++)
{
worksheet.Cells[c, 1].Value = subscribers[c - 2].Name;
worksheet.Cells[c, 2].Value = subscribers[c - 2].Email;
worksheet.Cells[c, 3].Value = subscribers[c - 2].DateCreated.ToString();
}
package.Save();
}
string fileName = "Subscribers.xlsx";
string fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
stream.Position = 0;
return File(stream, fileType, fileName);
}
}
}
我在一个 .NET Core 项目上工作,我应该从记录创建电子表格文件并下载它而不将其保存在服务器中。搜索上面的标题并没有多大帮助,但给出了一些指导。此外,ASP.NET 中使用的大多数方法在 .NET Core 中都不起作用。所以,我终于想出了一个效果很好的解决方案。我将在下面的答案中分享给那些和我一样搜索的人。
首先,您需要安装 EPPlus.Core 包。如果你要通过 Package Manager Console
安装它,你可以这样做:
Install-Package EPPlus.Core
然后为 OfficeOpenXml
添加您的 using 语句:
using OfficeOpenXml;
下载文件的示例方法如下所示:
using OfficeOpenXml;
namespace MyProject.Controllers
{
public class SubscribersController : Controller
{
private readonly ApplicationDbContext _context;
public SubscribersController(ApplicationDbContext context)
{
_context = context;
}
public async Task<IActionResult> ExportToExcel()
{
var stream = new System.IO.MemoryStream();
using (ExcelPackage package = new ExcelPackage(stream))
{
var subscribers = await _context.Subscribers.ToListAsync();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Subscribers");
worksheet.Cells[1, 1].Value = "Name";
worksheet.Cells[1, 2].Value = "Email";
worksheet.Cells[1, 3].Value = "Date Subscribed";
worksheet.Row(1).Style.Font.Bold = true;
for (int c = 2; c < subscribers.Count + 2; c++)
{
worksheet.Cells[c, 1].Value = subscribers[c - 2].Name;
worksheet.Cells[c, 2].Value = subscribers[c - 2].Email;
worksheet.Cells[c, 3].Value = subscribers[c - 2].DateCreated.ToString();
}
package.Save();
}
string fileName = "Subscribers.xlsx";
string fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
stream.Position = 0;
return File(stream, fileType, fileName);
}
}
}