Я использую PHPExcel для анализа моего файла Excel. И мой файл содержит изображения в каждой строке. Я использую функцию «getDrawingCollection», чтобы получить все изображения в файле Excel. В целом работает нормально. Но некоторые изображения не распознаются функцией getDrawingCollection. Нужно ли что-то менять в моем коде?
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($uploadfile);
$objWorksheet = $objPHPExcel->getActiveSheet();
foreach ($objWorksheet->getDrawingCollection() as $drawing) {
$string = $drawing->getCoordinates();
$coordinate = PHPExcel_Cell::coordinateFromString($string);if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
//copy image
}
}
if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
Не подберу «рисунки памяти»
Вы можете использовать
if ($drawing instanceof PHPExcel_Worksheet_BaseDrawing) {
вместо; что-то вроде:
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);
}
Других решений пока нет …