Pasar imagen de excel a MySQL

  • Autor Autor giulichajari
  • Fecha de inicio Fecha de inicio
giulichajari

giulichajari

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Vendi un sistema a un cliente y me paso la tabla de productos de su provedor.
Para cada producto tiene una celda con la imagen del mismo..
Como puedo almacenar esa imagen en Mysql? Debo obtener el codigo BLOB de cada una una x una?
O podria programar un proceso que tome cada celda de imagen y la inserte?

Algunas hojas del archivo lucen asi:

Captura de pantalla (77).webp


Ademas en ese formato seria muy dificil programar una actualizacion de precios, es decir que tome el costo, dado que no esta un registro debajo del otro asi que voy a programar un incremento porcentual de productos por grupo.
Pero igual me interesa saber como subir las imagenes
 
Última edición:
Yo no soy nada fan de meter imágenes en base de datos, especialmente con MySQL. Me parece que es mejor añadir una referencia y guardar la imagen en fichero.

En todo caso puedes leer la imagen con PHPSpreadsheet y ya después la guardas como prefieras, convirtiendo a blob o guardando.
 
Yo no soy nada fan de meter imágenes en base de datos, especialmente con MySQL. Me parece que es mejor añadir una referencia y guardar la imagen en fichero.

En todo caso puedes leer la imagen con PHPSpreadsheet y ya después la guardas como prefieras, convirtiendo a blob o guardando.
Claro igualmente es dificil leer tablas dispuestas horizontalmente. Tendria q crear un bucle sino sobre las filas y q vaya bajando cada 4 columnas.
Si guardo las imagenes en un archivo.. Puedo visualizarla en un datatable luego o seria muy pesada la pagina? .. La tengo en un VPS.
 
Sí, tendrás que tener un poco de cuidado con el bucle para sacar la fila y columna correcta de cada objeto, usando la división entera y el módulo de 4. Piensa que no tienes obligatoriamente que recorrer el excel por filas. Las librerías te suelen dar todo el excel como un array y tú lo puedes recorrer como quieras.

No tienes problema para visualizar imágenes de un fichero con datatables. Simplemente tendrás que generar la URL del fichero en función de lo que guardes en la base de datos (si guardas un nombre de fichero tendrás que añadir todo el "https://dominio.com/imagen/...") y hacer que el datatable lo muestre. Busca por Google y encontrarás bastantes ejemplos.
 
Sí, tendrás que tener un poco de cuidado con el bucle para sacar la fila y columna correcta de cada objeto, usando la división entera y el módulo de 4. Piensa que no tienes obligatoriamente que recorrer el excel por filas. Las librerías te suelen dar todo el excel como un array y tú lo puedes recorrer como quieras.

No tienes problema para visualizar imágenes de un fichero con datatables. Simplemente tendrás que generar la URL del fichero en función de lo que guardes en la base de datos (si guardas un nombre de fichero tendrás que añadir todo el "https://dominio.com/imagen/...") y hacer que el datatable lo muestre. Busca por Google y encontrarás bastantes ejemplos.
Ok gracias amigo..
Voy a iterar para extraer las imagenes de las celdas y guardarlas en un fichero.
Aunque lo mas importante es que me quede la iteracion para hacer update de los precios que cambian mes a mes.
Aunque otra alternativa seria que el usuario se fije en el excel el precio y dejar el mismo editable en la ventana de la factura. Pero lo voy a intentar.
 
Con el mismo bash y la consola de MySQL lo puedes hacer.

Primero lo exportas como csv y por separado exportas cada una de las imágenes (de preferencia que tengan un identificador único). Ya que tengas creada la tabla con los campos que quieras, importas el archivo CSV (https://www.mysqltutorial.org/import-csv-file-mysql-table/). Luego haces un UPDATE en loop con las imágenes usando bash https://stackoverflow.com/questions/39215064/insert-into-mysql-from-bash-script Y en teoría ya lo tienes en tu base de datos.

Aunque en este caso, lo más seguro es que tengas que meterle mano a alguna variable de entorno porque si no te va a aparecer un error por exceder los 65,535 bytes.
 
Con el mismo bash y la consola de MySQL lo puedes hacer.

Primero lo exportas como csv y por separado exportas cada una de las imágenes (de preferencia que tengan un identificador único). Ya que tengas creada la tabla con los campos que quieras, importas el archivo CSV (https://www.mysqltutorial.org/import-csv-file-mysql-table/). Luego haces un UPDATE en loop con las imágenes usando bash https://stackoverflow.com/questions/39215064/insert-into-mysql-from-bash-script Y en teoría ya lo tienes en tu base de datos.

Aunque en este caso, lo más seguro es que tengas que meterle mano a alguna variable de entorno porque si no te va a aparecer un error por exceder los 65,535 bytes.
Hola amigo.. Gracias por responder. Si habia pensado en. Csv. Pero las columnas tienen que tener titulo y los registros tienen que estar dispuestos en filas pra abajo.. No como se ve en la imagen.
Ademas si exporto a csv las imagenes que estan dentro de las celdas se exportaran?
Es mas.. Capaz haga un trabajito manual porque quiero extraer el rubro de las piezas ponerlo en categorias y subcstegorias de articulos
 
Sin querer encontre este video:


Donde cambiando la extension a zip y descomprimiendo se extraen las imagenes de las celdas.
 
Atrás
Arriba