Я хочу прочитать / получить изображение из файла excel на PHP с помощью PHPExcel. Этот код используется для извлечения значения из конкретной ячейки.
$objPHPExcel->getActiveSheet()->getCell('B5')->getValue();
Это извлекает только значение ячейки, но я не могу получить изображение. Есть ли способ сделать это?
phpexcel read image эту страницу как второй результат. Он рассказывает вам, как это сделать.
Чтобы прямо указать соответствующую информацию:
$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могут использоваться для извлечения файла изображения из этих объектов.
Проверьте этот пример. Я нашел это полезным ..
$objPHPExcel = PHPExcel_IOFactory::load($_FILES['archivo']['tmp_name']); $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(); $extension = 'png'; } 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); }