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

IDEs para programar en PHP
Arreglos y matrices en PHP
Implementar la guía de estilo de dependencias de gobierno de México en WordPress
Persistencia de objetos para PHP
Obtener diferencias de dias en php de forma facil

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

COMMENTS

WORDPRESS: 2
  • comment-avatar

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

    • comment-avatar

      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.