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

У меня есть таблица, которую я хотел бы импортировать с помощью PHP. Я могу импортировать данные ячейки с помощью PHPExcel, но не могу понять, как использовать изображения из электронной таблицы.

Есть ли способ сделать это, а затем использовать изображения в PHP для сохранения на сервере и т. Д.?

Большое спасибо за помощь! 🙂


Обновить:

@ mark-baker – большое вам спасибо за вашу помощь!

Я использовал код ниже в тестовом XLS-файле с одним JPG:

$objPHPExcel = PHPExcel_IOFactory::load("SH.xls"); 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(); } } 

Я думаю, что смогу затем вывести заголовки JPEG и содержимое $imageContents чтобы показать изображение.

Как получить фактическое имя изображения в электронной таблице, например, «Picture1»? Возможно ли это с помощью PHPExcel_Worksheet_MemoryDrawing?

Я не могу вас поблагодарить!

Кто-то, я не знаю, был ли он сам, задал аналогичный вопрос на доске PHPExcel … что я еще не получил ответа.

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

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

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

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

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

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

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

На основе вашего кода в измененном вопросе:

 $drawing->getName(); 

должен дать вам то, что вам нужно

Вы можете сделать следующее:

 $im = {excel data} <br> header("Content-type: image/jpeg"); // or whatever <Br> $image = imagejpeg($im, NULL, 100);