Я получаю содержимое файла как двоичный или байтовый массив (FROM THE REST API) и хочу преобразовать его в файл excel и загрузить его на стороне клиента с помощью angular.js, но не знаю, как это сделать. Может кто-нибудь помочь мне здесь.
Также im прикрепляет код здесь, файл.xls загружается, но после его открытия содержимое файла остается одним и тем же двоичным/байтовым содержимым, которое im получает от ответа api, а не фактическое содержимое файла. Может кто-нибудь сказать, чего я здесь не вижу. Или как я могу преобразовать/прочитать ответ на фактический формат. Любая помощь очень ценится, поскольку я полностью застрял.
$http.get(__env.apiUrl+"/UserSurvey/GetTrackingReport?surveyId="+$rootScope.surveysummaryID,{headers:{"Content-type":"application/json",'sessionID':$rootScope.token}}).then(function(response){
console.log(response);
var blob = new Blob([response.data], {type: 'application/vnd.ms-excel'});
if (window.navigator && window.navigator.msSaveBlob) {
window.navigator.msSaveBlob(blob);
}
else {
var objectUrl = URL.createObjectURL(blob);
window.open(objectUrl);
}
},function(error){
console.log(error);
});
Большое спасибо,
Если кто-то столкнулся с той же проблемой, я пропустил преобразование значения unsignedint и передал то же самое на объект blob, и он работает !!
$http.get(__env.apiUrl+"/UserSurvey/GetTrackingReport?surveyId="+$rootScope.surveysummaryID,{headers:{"Content-type":"application/json",'sessionID':$rootScope.token,'Accept': "application/vnd.ms-excel"}}, {responseType: 'arraybuffer'}).then(function(response){
var dec = window.atob(response.data);
var myArr = new Uint8Array(dec.length)
for(var i = 0; i < Object.keys(dec).length; i++){
myArr[i] = dec.charCodeAt(i);
}
var blob = new Blob([myArr], {type: 'application/vnd.ms-excel'});
if (window.navigator && window.navigator.msSaveBlob) {
window.navigator.msSaveBlob(blob);
}
else {
var objectUrl = URL.createObjectURL(blob);
window.open(objectUrl);
}
},function(error){
console.log(error);
});
Надеюсь, это поможет кому-то!