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

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.

2 Comentarios

Juan Karloz · 18 diciembre, 2017 a las 10:45

Amigo, si solo necesito sacar imagenes de unas celdas especificas,, como se haria???

    angelinux · 19 diciembre, 2017 a las 10:25

    Qué tal.

    La biblioteca la desarrollé para hojas, no le di soporte para buscar por celdas. No creo poder, en corto plazo, darle el soporte.

    Espero tengas suerte con tu búsqueda.

    Saludos.

Deja un comentario