Saltar al contenido

Extraer fotografías/imágenes dentro de un archivo de Excel (xls) usando PHP

No olvides que en las ciencias informáticas un error casi siempere puede tener diversas soluciones, de igual modo nosotros aquí te mostramos lo más óptimo y mejor.

Solución:

Alguien, no sé si es usted mismo, ha hecho una pregunta similar en el tablero de PHPExcel… que aún no he podido responder.

$objPHPExcel->getActiveSheet()->getDrawingCollection()

devolverá un ArrayObject de todos los objetos de imagen en la hoja de trabajo activa.

Estos objetos serán objetos PHPExcel_Worksheet_Drawing o PHPExcel_Worksheet_MemoryDrawing: puede identificar cuáles usando is_a(). Luego puede usar los métodos apropiados para esa clase (como se describe en la API) para leer los datos de la imagen del archivo (para objetos PHPExcel_Worksheet_Drawing) o directamente desde el propio objeto PHPExcel_Worksheet_MemoryDrawing. Los métodos getName() y getDescription() se pueden usar para recuperar los valores relevantes del objeto de imagen.

Tenga en cuenta que también es posible tener objetos de imagen asociados con encabezados de impresión:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages()

se puede utilizar para recuperar imágenes del encabezado/pie de página. Esto es un array de objetos PHPExcel_Worksheet_HeaderFooterDrawing. Todos los métodos PHPExcel_Worksheet_Drawing se pueden usar para extraer el archivo de imagen de estos objetos.

EDITAR

Basado en su código en la pregunta modificada:

$drawing->getName();

debería darte lo que necesitas

He visto el ejemplo de lectura de imágenes de una hoja de trabajo, funciona bien, pero personalicé el mismo ejemplo para los requisitos de mi proyecto como se muestra a continuación.

require 'vendor/autoload.php';

$spreadsheet = PhpOfficePhpSpreadsheetIOFactory::load("./excel.xlsx");

$worksheet = $spreadsheet->getActiveSheet();
$worksheetArray = $worksheet->toArray();
array_shift($worksheetArray);

echo '';
echo '';
echo '';
echo '';
echo '';
echo '';

foreach ($worksheetArray as $key => $value) 

    $worksheet = $spreadsheet->getActiveSheet();
    $drawing = $worksheet->getDrawingCollection()[$key];

    $zipReader = fopen($drawing->getPath(), 'r');
    $imageContents = '';
    while (!feof($zipReader)) 
        $imageContents .= fread($zipReader, 1024);
    
    fclose($zipReader);
    $extension = $drawing->getExtension();

    echo '';
    echo '';
    echo '';
    echo '';
    echo '';

Producción:
ingrese la descripción de la imagen aquí

Creé el proyecto de demostración de GitHub “phpspreadsheet-Reading-Images-from-an-Excel-File” para referencia futura.

Enlace Github: https://github.com/rajaramtt/phpspreadsheet-Reading-Images-from-an-Excel-File

valoraciones y comentarios

Eres capaz de confirmar nuestro análisis fijando un comentario y dejando una puntuación te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología

SnoNameImage
' . $value[0] . '' . $value[1] . '