我已经找到了在服务器上生成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
(类似于View
或Redirect
,但返回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/