【发布时间】:2016-09-02 16:11:51
【问题描述】:
我正在尝试通过 WebAPI 下载 Excel 文件。基本上 Excel 文件是通过内存流在此 Post 的帮助下创建的
Excel 内容生成正常,但是当我在 Chrome 网络工具的响应选项卡中看到响应本身是纯 XML 时,我无法下载 Excel。以下是我的 C# 代码
var sheet = linq.ExportToExcel(userAddedList);
var stream = new MemoryStream();
var sw = new StreamWriter(stream);
sw.Write(sheet);
sw.Flush();
var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(stream.GetBuffer()) };
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Report.xml" };
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/ms-excel");
var response = ResponseMessage(result);
return response;
这就是我通过 Angular 调用它的方式。
var httpRequest = commonFunctions.getRequestObject("GET", requestURL, {}, null);
$http(httpRequest).then(function (response) {
vm.isProcessing = false;
}, function (error) { displayError(error); });
【问题讨论】:
-
您正在指定一个 XML 扩展,然后将内容类型设置为 Excel 的 BIFF 版本。你到底期待什么结果?我会看看stackoverflow.com/a/4212908/534109
-
@TiesonT. 正如我提到的,我只是按照帖子中的示例进行操作。无论如何,正如你所建议的,我将扩展名更改为 xls 并将 MIME 类型更改为 application/vnd.ms-excel。没有 AJAX 请求它可以正常工作,但是我很想知道如何使它与 AJAX 一起工作
标签: c# angularjs excel linq asp.net-web-api