Извлечение изображений из файла Excel (xlsx) с помощью PHP

Как я могу читать изображения из файла excel с помощью PHPExcel и сохранять изображения на сервере и отображать их? Расширением файла является .xlsx.

Мой код:

$objPHPExcel = PHPExcel_IOFactory::load($path); foreach ($objPHPExcel->getActiveSheet()->getDrawingCollection() as $drawing) { if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { ob_start(); call_user_func( $drawing->getRenderingFunction(), $drawing->getImageResource() ); $imageContents = ob_get_contents(); ob_end_clean(); } } 

Благодаря!!

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

вернет объект ArrayObject всех объектов изображения на активном листе.

Эти объекты будут либо объектами PHPExcel_Worksheet_Drawing, либо PHPExcel_Worksheet_MemoryDrawing: вы можете определить, используя с помощью [is_a ()] [1]. Затем вы можете использовать методы, соответствующие этому классу (как описано в API), либо для чтения данных изображения из файла (для объектов PHPExcel_Worksheet_Drawing), либо непосредственно из объекта PHPExcel_Worksheet_MemoryDrawing. Методы getName () и getDescription () могут использоваться для извлечения соответствующих значений для объекта изображения.

Обратите внимание, что также возможно иметь объекты изображения, связанные с заголовками печати:

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

может использоваться для извлечения изображений из верхнего / нижнего колонтитула. Это массив объектов PHPExcel_Worksheet_HeaderFooterDrawing. Все методы PHPExcel_Worksheet_Drawing могут использоваться для извлечения файла изображения из этих объектов.

РЕДАКТИРОВАТЬ

Время подачи ложки.

Это позволит извлечь все изображения с текущего активного листа и записать их в файлы на сервере.

 $objPHPExcel = PHPExcel_IOFactory::load($path); $i = 0; foreach ($objPHPExcel->getActiveSheet()->getDrawingCollection() as $drawing) { if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { ob_start(); call_user_func( $drawing->getRenderingFunction(), $drawing->getImageResource() ); $imageContents = ob_get_contents(); ob_end_clean(); switch ($drawing->getMimeType()) { case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG : $extension = 'png'; break; case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_GIF: $extension = 'gif'; break; case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG : $extension = 'jpg'; break; } } else { $zipReader = fopen($drawing->getPath(),'r'); $imageContents = ''; while (!feof($zipReader)) { $imageContents .= fread($zipReader,1024); } fclose($zipReader); $extension = $drawing->getExtension(); } $myFileName = '00_Image_'.++$i.'.'.$extension; file_put_contents($myFileName,$imageContents); } 

Файлы называются

 00_Image_n.extension 

где n – число, начинающееся с 1, а расширение – соответствующее расширение (png, jpg, gif, что угодно) для типа изображения.