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.