Nad*_*ali 13 javascript c# excel asp.net-web-api angularjs
我正在处理一项任务,我必须以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;
}
Run Code Online (Sandbox Code Playgroud)
以下是客户端的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
以下是错误消息:
Excel无法打开newFile.xlsx,因为某些内容不可读.你想打开并修复这个工作簿吗?
单击修复时,出现以下错误:
Excel无法打开此文件.
文件格式或文件扩展名无效.验证文件是否已损坏,以及文件扩展名是否与文件格式匹配.
有人可以指导我做错了吗?同时,相同的服务器端文件生成器对象在ASP.Net表单应用程序中运行顺畅,文件打开时也没有任何错误.
谢谢.
han*_*aad 36
我希望您的$http呼叫缺少响应类型配置.这是我下载office文件的方式:
function download(url, defaultFileName) {
var self = this;
var deferred = $q.defer();
$http.get(url, { responseType: "arraybuffer" }).then(
function (data, status, headers) {
var type = headers('Content-Type');
var disposition = headers('Content-Disposition');
if (disposition) {
var match = disposition.match(/.*filename=\"?([^;\"]+)\"?.*/);
if (match[1])
defaultFileName = match[1];
}
defaultFileName = defaultFileName.replace(/[<>:"\/\\|?*]+/g, '_');
var blob = new Blob([data], { type: type });
saveAs(blob, defaultFileName);
deferred.resolve(defaultFileName);
}, function (data, status) {
var e = /* error */
deferred.reject(e);
});
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46427 次 |
| 最近记录: |