Как преобразовать двоичный код из остальных API в файл Excel в angular.js

0

Я получаю содержимое файла как двоичный или байтовый массив (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);
        });

Большое спасибо,

Теги:
excel
binary
byte

1 ответ

0

Если кто-то столкнулся с той же проблемой, я пропустил преобразование значения 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);
        });

Надеюсь, это поможет кому-то!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню