Как экспортировать HTML-таблицу в Excel с помощью angularjs / javascript

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я написал ниже код для загрузки файла. Он работает для ограниченной записи. теперь количество моих записей превышает 12000. Затем браузер зависает, а файл не загружается

 var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
var edgetype = ua.indexOf("Edge");
var blobObject;
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11./)) {
    expExcelIframe.document.open("txt/html", "replace");
    expExcelIframe.document.write(html);
    expExcelIframe.document.close();
    expExcelIframe.focus();
    expExcelIframe.document.execCommand("SaveAs", true, fileName);
}
else if (edgetype > 0) {
    blobObject = new Blob([html]);
    window.navigator.msSaveOrOpenBlob(blobObject, fileName);
}
else {
    window.open('data:application/vnd.ms-excel,'   encodeURIComponent(html));
}
  

Комментарии:

1. Любой альтернативный код для сохранения файла в формате Excel

2. Почему вам нужен альтернативный метод? Что не так с этим методом?

3. В каком случае сбой? msie, EdgeType или другое?

4. если количество записей превышает тысячу, это занимает больше времени, и браузер зависает

Ответ №1:

Заменить encodeURIComponent :

МЕДЛЕННО

 window.open('data:application/vnd.ms-excel,'   encodeURIComponent(html));
  

Лучше

 var blob = new Blob([html],{type: 'data:application/vnd.ms-excel' });
var u = URL.createObjectURL(blob);
window.open(u);
  

Это позволяет избежать этапа преобразования в base64, требующего больших затрат памяти и вычислений.

Комментарии:

1. Спасибо за ваш ответ, но теперь я получаю сообщение «Ошибка: доступ запрещен». Не могли бы вы предложить это.