我已经找到了在服务器上生成excel文件(xlsx)的解决方案。第一次调用时,它将删除文件demo.xlsx(如果存在)并生成新的demo.xlsx。

首次通话
http://localhost:8000/api/importexport/export

它生成excel文件(xlsx)并发送URL进行下载

第二次通话
http://localhost:8000/demo.xlsx

下载文件。
在Configure方法的Startup类中,您必须添加
app.UseStaticFiles();

这是解决方案的链接
http://www.talkingdotnet.com/import-export-xlsx-asp-net-core/

此解决方案的问题是我有两个服务器调用。
我要一个电话
http://localhost:8000/api/importexport/export
直接下载excel文件(xlsx)。
我听说可以在一次调用中下载excel文件(xlsx),而无需在服务器上动态创建文件。
我很高兴在一次致电服务器中看到更好的解决方案。

最佳答案

很简单,只需返回File(类似于ViewRedirect,但返回File):

public async Task<ActionResult> Index()
{
    var fileMemoryStream = await GenerateReportAndWriteToMemoryStream(...);
    return File(
        fileMemoryStream,
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "report.xlsx");
}

method is part of ControllerBase 并具有多个签名,请选择最适合您的需求的签名:
File(byte[] fileContents, string contentType)
File(Stream fileStream, string contentType)
File(string virtualPath, string contentType)
File(string virtualPath, string contentType, string fileDownloadName)
File(byte[] fileContents, string contentType, string fileDownloadName)
File(Stream fileStream, string contentType, string fileDownloadName)

关于c# - ASP.NET Core一次调用服务器(即时)直接返回excel文件(xlsx)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43136185/

10-13 06:49