phpexcel getDrawingCollection — некоторые изображения не распознаются

Я использую 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
}
}

0

Решение

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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]