Extraer imagenes de excel con PHP

 

Clase: phpXLSX
Autor: Horacio R. Méndez.
Debido a la necesidad, he creado una clase que de forma fácil extrae u obtiene las imágenes que contiene un archivo de Excel 2007.

Puedes descargarla de aquí https://sourceforge.net/projects/phpxlsx/

La clase se llama phpXLSX. Contiene los siguientes métodos:
  • Obtener la lista de hojas.
  • Obtener solo las hojas que contengan imágenes.
  • Extraer todas las imágenes de todas las hojas.
  • Extraer imágenes solo de una o varias hojas indicando cuales.

Requisitos:

Las imágenes se obtienen como base64 y en un arreglo, por lo que el desarrollador puede elegir en mostrarlas directamente como base64 sin necesidad de crear y almacenarlos como archivos, o bien, almacenarlos como archivos o en una base de datos.

Ejemplos:

NOTA: Para evitar  un mayor tamaño en el paquete, se omite el archivo de excel, debes crearlo tu y colocar las imágenes.

 

Obtener el nombre de todas las hojas:

 

<?php
//Se incluye la clase
include_once("phpXLSX/phpXLSX.php");

try {
    //No se necesita instanciar, solo se indica el método abrir, indicando el archivo como parámetro
    phpXLSX::abrir("archivo_excel.xlsx");

    //Ver todas las hojas
    $xlsx = phpXLSX::verHojas();
    foreach ($xlsx as $excel)
        echo $excel["hoja"]."n";

    //Cerrar el archivo y limpiar temporales
    phpXLSX::cerrar();

} catch (Exception $e){
    echo $e->getMessage();
}
?>






Obtener solo las hojas que tengan imágenes:

<?php
//Se incluye la clase
include_once("phpXLSX/phpXLSX.php");

try {
    //No se necesita instanciar, solo se indica el método abrir, indicando el archivo como parámetro
    phpXLSX::abrir("archivo_excel.xlsx");

    //Ver todas las hojas que contengan imagenes
    $xlsx = phpXLSX::verHojasImg();
    foreach ($xlsx as $excel)
        echo $excel["hoja"]."n";

    //Cerrar el archivo y limpiar temporales
    phpXLSX::cerrar();

} catch (Exception $e){
    echo $e->getMessage();
}
?>





Extraer y mostrar en HTML todas las imágenes de todas las hojas

<?php
//Se incluye la clase
include_once("phpXLSX/phpXLSX.php");

try {
    //No se necesita instanciar, solo se indica el método abrir, indicando el archivo como parámetro
    phpXLSX::abrir("archivo_excel.xlsx");

    //Obtener todas las imagenes de todas las hojas
    foreach (phpXLSX::verImg() as $xlsxImg){
        ?>
        <img src="data:image/jpeg;base64,<?php echo $xlsxImg?>" />
        <?php
   }

    //Cerrar el archivo y limpiar temporales
    phpXLSX::cerrar();

} catch (Exception $e){
    echo $e->getMessage();
}
?>




Extraer y mostrar en HTML solo la hoja Hoja1 (Indica tú la hoja que quieras)

<?php
//Se incluye la clase
include_once("phpXLSX/phpXLSX.php");

try {
    //No se necesita instanciar, solo se indica el método abrir, indicando el archivo como parámetro
    phpXLSX::abrir("archivo_excel.xlsx");

    //Obtener todas las imagenes de Hoja1
    foreach (phpXLSX::verImg("Hoja1") as $xlsxImg){
        ?>
       <img src="data:image/jpeg;base64,<?php echo $xlsxImg?>" />
       <?php
   }

    //Cerrar el archivo y limpiar temporales
    phpXLSX::cerrar();

} catch (Exception $e){
    echo $e->getMessage();
}
?>




Extraer y mostrar en HTML solo las hojas Hoja1 y Hoja2 (Indica tú las hojas que quieras)

<?php
//Se incluye la clase
include_once("phpXLSX/phpXLSX.php");

try {
    //No se necesita instanciar, solo se indica el método abrir, indicando el archivo como parámetro
    phpXLSX::abrir("archivo_excel.xlsx");

    //Obtener todas las imagenes de Hoja1 y Hoja2
    foreach (phpXLSX::verImg("Hoja1, Hoja2") as $xlsxImg){
        ?>
       <img src="data:image/jpeg;base64,<?php echo $xlsxImg?>" />
       <?php
   }

    //Cerrar el archivo y limpiar temporales
    phpXLSX::cerrar();

} catch (Exception $e){
    echo $e->getMessage();
}
?>




Extraer y mostrar en HTML todas las imagenes separandolas por hoja y mostrando a cual pertenece

<?php

//Se incluye la clase
include_once("phpXLSX/phpXLSX.php");

try {
    //No se necesita instanciar, solo se indica el método abrir, indicando el archivo como parámetro
    phpXLSX::abrir("archivo_excel.xlsx");

    //Obtener el nombre de todas las hojas que contengan imagenes
    $xlsx = phpXLSX::verHojasImg();

    foreach ($xlsx as $excel){
        echo "<b>Hoja ".$excel["hoja"]."<b/><br/>";
        foreach (phpXLSX::verImg($excel["hoja"]) as $xlsxImg){
        ?>
            <img src="data:image/jpeg;base64,<?php echo $xlsxImg?>" />
        <?php
        }
        echo "<hr/>";
    }

    //Cerrar el archivo y limpiar temporales
    phpXLSX::cerrar();

} catch (Exception $e){
    echo $e->getMessage();
}
?>

 

La clase está en su primera versión, dudas, sugerencias de nuevas funcionalidades y cualquier comentario es bienvenido

Author: angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana.
Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

Deja un comentario