> Faqs > Solucionar caracteres con acentos que aparecen mal al exportar a Excel desde Laravel

Solucionar caracteres con acentos que aparecen mal al exportar a Excel desde Laravel

Uso la librería maatwebsite/excel (Laravel Excel) para hacer una exportación de datos de Laravel a Excel, generando archivos .xlsx

  • Tengo Laravel 9 actualmente
  • La librería la tengo actualizada

El caso es que todos los acentos y caracteres del español como la eñe me salen mal. Aparecen cosas como...

Nombre	                Email	        Producto	        Comprado 
José Vernal Expósito	kk@example.com	Televisión 32	    13/07/2022

Es el típico error de que las cosas no están funcionando con UTF-8, pero he verificado todos los archivos que participan en el proceso de exportado y todo está en UTF-8.

Además, como es un archivo de excel .xlsx no sé donde mirar cómo arreglarlo. ¿alguna sugerencia?

Respuestas

¿Estás generando el archivo mediantes vistas de blade? Porque en ese caso debes colocar una etiqueta META a la vista.

Si estás exportando a .xlsx, al principio de las vistas que generan el excel, coloca esta etiqueta:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

No hace falta nada más. Es decir, aunque no coloques otras etiquetas como <head> para ubicar esa etiqueta <meta>te funciona perfectamente.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<table class="coursereport">
  <tr>
    <th>Nombre</th>
    <th>Email</th>
  </tr>
  <tr>
    <td>Rubén García</td>
    <td>...</td>
  </tr>
</table>

Supongo que si haces un documento HTML completo también funcionará.

Si usas csv entonces tienes que publicar el archivo de configuración y cambiar 'use_bom' a true

'use_bom' => true,
Miguel Angel
3145 140 209 17
Muchas gracias Miguel, muy amable por tu respuesta.