【发布时间】:2015-09-17 01:18:29
【问题描述】:
我正在处理一项任务,我必须下载 xlsx 格式的报告。报告文件从服务器成功生成,客户端也接收到。但它没有打开并产生无效格式错误。
下面是服务器端的代码。
var output = await reportObj.GetExcelData(rParams);
if (output != null){
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(output.ConentBytes)
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = output.FileName
};
return result;
}
这是客户端的代码:
var saveData = function (response) {
if (response.status === 200) {
var reportData = response.data;
var b = new Blob([reportData], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
saveAs(b,"ReportFile.xlsx");//this is FileSaver.js function
} else {
console.log(response.statusText);
}
};
$scope.getExcelFile = function(reportName, reportParams) {
reportDataService.getExcelReportData(reportName, reportParams, saveData);
}
以下是错误信息:
Excel 无法打开 newFile.xlsx,因为某些内容不可读。是否要打开并修复此工作簿?
点击修复后,出现以下错误:
Excel 无法打开此文件。
文件格式或文件扩展名无效。验证文件没有损坏并且文件扩展名与文件格式匹配。
有人可以指导我做错了什么吗?同时,相同的服务器端文件生成器对象在 ASP.Net 表单应用程序中运行顺畅,文件打开也没有任何错误。
谢谢。
【问题讨论】:
-
你是什么
$http配置?请添加请求行。 -
config.headers.Authorization = "承载" + authData.token;这仅用于授权目的。
标签: javascript c# angularjs excel asp.net-web-api