Я хочу прочитать / получить изображение из файла 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); }