Извлечение изображений / изображений в файле 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?
Я не могу тебя отблагодарить!
2 ответов
$objPHPExcel->getActiveSheet()->getDrawingCollection()
вернет ArrayObject всех объектов изображения на активном листе.
эти объекты будут либо PHPExcel_Worksheet_Drawing или PHPExcel_Worksheet_MemoryDrawing объектов: вы можете определить, с помощью is_a(). Затем вы можете использовать методы, соответствующие этому классу (как описано в API) либо для чтения данных изображения из файла (для объектов PHPExcel_Worksheet_Drawing), либо непосредственно из самого объекта PHPExcel_Worksheet_MemoryDrawing. Методы getName() и getDescription() можно использовать для извлечения соответствующих значений из объекта image.
обратите внимание, что также возможно иметь объекты изображения, связанные с заголовками печати:
$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);