Tengo un sistema de informes que necesita mostrar un conjunto de proyectos terminados, así como 3 imágenes de los proyectos terminados. Las imágenes están alojadas en mi servidor de archivos estático.
Cuando genero el informe, envío la ruta de guardado de las imágenes a mi interfaz y luego, en la interfaz, agrego la ruta de guardado a la URL del servidor estático y luego la coloco en el atributo src de una etiqueta img (en realidad, mi propia imagen de React). componente pero es todo lo mismo).
Entonces, cuando genero el informe y lo veo a través de mi sistema de informes, todo funciona, cuando lo exporto como PDF, todo funciona, pero cuando lo exporto como Excel, no muestra las imágenes. He probado los siguientes 3 métodos:
Uso sheetjs : esta fue la herramienta que usé hasta ahora durante más de un año, pero requieren un pago de $ 800 USD para brindarme la capacidad de renderizar imágenes dentro de mi xlsx.
Usando @linways/table-to-excel que afaik actualmente no se mantiene. Intenté lo siguiente:
TableToExcel.convert(print, {name: props.name + " - " + props.datesInfo})
pero no funcionó, solo mostró el texto e ignoró las imágenes.
Finalmente probé con la función encodeURIComponent para codificar mi html como data:application/vnd.ms-excel . Sorprendentemente, esta fue la forma más fácil y menos hinchada (no requiere ningún paquete) y funcionó mejor. No era bonito, pero al menos tenía algo: imágenes. Sin embargo, las imágenes aparecían como una simple cruz roja (x).
¿Alguien sabe cómo resolver este problema con la cruz roja (x)? ¿Podría ser algún problema con la codificación o tal vez alguna medida de seguridad de MS Office Excel?
Editar:
Las imágenes en realidad aparecían en el informe, es solo que estaba usando la versión web de Excel porque estoy ejecutando Arch Linux por cierto y no tengo acceso a la versión nativa de Excel sin instalar bloatware como Wine y Winetricks y demás. Todo está bien, incluso descubrí cómo agregar estilos. Si alguien se queda atascado en los estilos, asegúrese de que sean estilos en línea y solo en td y th . CSS no aceptará.