2016-06-21 10 views
0

Ich benutze PHPExcel, um durch meine Excel-Datei zu analysieren. Und meine Datei hat Bilder in jeder Zeile. Ich verwende "getDrawingCollection" -Funktion, um alle Bilder in der Excel-Datei zu erhalten. Es funktioniert insgesamt gut. Einige Bilder werden jedoch von der Funktion getDrawingCollection nicht erkannt. Muss ich irgendetwas in meinem Code ändern?phpexcel getDrawingCollection - einige Bilder werden nicht erkannt

$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 
     } 
    } 

Antwort

0
if ($drawing instanceof PHPExcel_Worksheet_Drawing) { 

Wird nicht abholen "Speicher Zeichnungen"

Sie könnten

if ($drawing instanceof PHPExcel_Worksheet_BaseDrawing) { 

stattdessen verwendet werden soll; so etwas wie:

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

Aber mein Problem ist, das "$ objPHPExcel-> getActiveSheet() -> getDrawingCollection()" Funktion selbst nicht, einige Bilder in meinem Excel-Blatt zu erkennen. Zum Beispiel: Ich habe 3 Bilder in meinem Arbeitsblatt. Aber diese Foreach-Schleife wird nur einmal ausgeführt. Die anderen 2 Bilder werden nicht erkannt. Gibt es ein Problem mit meinen Bildern? – viji

+0

Dann habe ich keine Ahnung, ohne die eigentliche Datei zu sehen. Abgesehen von Charts, die ihre eigene Sammlung haben; und Formen, die nicht von PHPExcel unterstützt werden, ich weiß nicht, welche Art von Bildern nicht zu der Zeichnung hinzugefügt werden. –

+0

http://jmp.sh/ISqbA8E Dies ist die Beispiel-Excel-Datei mit Bildern. Hier werden die ersten 2 Bilder nicht erkannt. – viji

Verwandte Themen