如何在 .NET Core 中提供使用 OpenXml 创建的可下载 excel 文件

How serve a downloadable excel file created with OpenXml, in .NET Core

我在 .NETCoreApp 1.1 中使用 OpenXml 2.7.2 生成了一个 excel 文件并将其保存到项目文件夹中。然后在我的函数中我读取字节并尝试 return 它作为一个文件。我没有收到错误,但在响应中我只是取回了二进制文件。所以它似乎可以工作,但没有下载。

这是我的代码:

[HttpGet]
[Route("export")]
public IActionResult Export()
    {
        return File(System.IO.File.ReadAllBytes(filePath),
        contentType: "application/octet-stream",
        fileDownloadName: "MySheet.xlsx");
        
    }

如果有人知道如何在 .net 核心中提供可下载的 excel 文件,请告诉我。感谢任何帮助!

更新

我不确定损坏是否与使用 OpenXml 生成 excel 文件有关,因为即使我尝试导出不是使用 OpenXml 生成的空文件,我也会收到相同的错误消息“文件已损坏,无法打开”。它也不完全与 Excel 2016 相关,因为我可以用它打开其他 excel 文件。

我找到了一个变通办法,这样我就不必依赖于读取文件并提供它,这似乎是我的问题。现在我要做的是生成 excel 和 return 以及 excel 文件的 url。然后在成功响应中我调用 window.open().

this.export().subscribe(
        data => window.open(urlToExcelFile, "_blank"),
        err => console.log(err)  
    );