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/
- 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:
- Tener activado el módulo ZipArchive en php
Ejemplos:
<?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(); } ?>
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.