Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

453
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!