Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

456
Vistas
Conversión de arraybuffer a blob para descargar como archivo de Excel en Chrome

Estoy tratando de crear un archivo de Excel que se pueda descargar desde Firefox y Chrome desde un entorno Angular 2+. Lo tengo funcionando perfectamente en Firefox, pero todo lo que intento simplemente no funciona en Chrome: descarga el archivo pero cuando lo abre arroja un error: "Excel no puede abrir este archivo porque el formato o la extensión del archivo no es válido. .".

Intenté configurar mi tipo de respuesta de publicación como 'arrayBuffer' y luego crear un blob y luego descargarlo, sin éxito. Probé el tipo de respuesta como: 1) 'blob' 2) 'blob' como 'json' 3) 'blob' como 'blob'

y pasándolo a través de mi componente de esa manera. Nada parece funcionar en Chrome, aunque todo funciona en Firefox.

Estas son algunas de mis funciones que he usado para intentar que Chrome abra este Excel.

 downloadBlob(data: Blob, fileName: string) { //output file name //detect whether the browser is IE/Edge or another browser if (window.navigator && window.navigator.msSaveOrOpenBlob) { //To IE or Edge browser, using msSaveorOpenBlob method to download file. window.navigator.msSaveOrOpenBlob(data, fileName); } else { //To another browser, create a tag to downlad file. const url = window.URL.createObjectURL(data); const a = document.createElement('a'); document.body.appendChild(a); a.setAttribute('style', 'display: none'); a.href = url; a.download = fileName; a.click(); window.URL.revokeObjectURL(url); a.remove(); } }
 blobToFile(data: Blob, fileName: string) { const a = document.createElement('a'); document.body.appendChild(a); a.style.display = 'none'; const url = window.URL.createObjectURL(data); a.href = url; a.download = fileName; a.click(); window.URL.revokeObjectURL(url); }
 downloadArray(data, fileName: string) { var blob = new window.Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); window.URL = window.URL || window.webkitURL; var url = window.URL.createObjectURL(blob); window.location.href = url; }

Incluso intenté usar el complemento FileSaver.js para guardar mi blob con oneliner

saveAs('blob', 'filename');

pero todo no se lee cuando se abre desde Chrome. Cualquier sugerencia sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Considere eliminar revokeObjectURL() . Esta prueba funciona y se descarga en Chrome: https://batman.dev/static/70844902/

 function downloadBuffer(arrayBuffer, fileName) { const a = document.createElement('a') a.href = URL.createObjectURL(new Blob( [ arrayBuffer ], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' } )) a.download = fileName a.click() }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda