【发布时间】:2017-08-23 07:58:05
【问题描述】:
我在 .NETCoreApp 1.1 中使用 OpenXml 2.7.2 生成了一个 excel 文件并将其保存到项目文件夹中。然后在我的函数中读取字节并尝试将其作为文件返回。我没有收到错误,但在响应中我只是取回了二进制文件。所以它似乎工作,但没有被下载。
这是我的代码:
[HttpGet]
[Route("export")]
public IActionResult Export()
{
return File(System.IO.File.ReadAllBytes(filePath),
contentType: "application/octet-stream",
fileDownloadName: "MySheet.xlsx");
}
如果有人知道如何在 .net core 中提供可下载的 excel 文件,请告诉我。感谢任何帮助!
更新
我不确定损坏是否与使用 OpenXml 生成 excel 文件有关,因为即使我尝试导出不是使用 OpenXml 生成的空文件,我也会收到相同的错误消息,提示“文件已损坏并且无法被打开”。它也与 Excel 2016 不完全相关,因为我可以用它打开其他 Excel 文件。
【问题讨论】:
-
您拥有的代码应该可以工作。我无法理解你的问题是什么。下载的文件将以二进制形式交付?问题中的图像应该代表什么以及正在使用什么工具?动作是如何被调用的?
-
图片显示了我在 http 调用的响应中得到的结果,这是 excel 二进制文件。我不想要那个。我希望将文件保存到名为 MySheet.xlsx 的 pc/mac 上。我用来查看响应的工具是 Chromes Inspect 工具。我从我的前端调用出口路线,角度为 2。
-
如果您只是在浏览器中输入网址,它是否会提示您下载文件,或者如果浏览器配置为这样做,至少开始下载它。
-
检查原始响应,您应该会看到与文件相关的所有信息都将与内容一起包含在内。服务器端代码是准确的。看来您需要研究客户端如何处理响应
-
所以我在 Swagger Ui 中测试了路由,它确实下载了。问题是我有一个代理,从一个端口到另一个端口,所以它没有下载,但是当我不使用代理时它可以工作。该文件返回已损坏,但仍需要进行一些调整。
标签: download .net-core openxml export-to-excel