php - PHPExcel - iterate through rows - if image then save image file -
so have import loops though excel file , gets rows , adds them database.
now trying find if there image in lastly comlumn of row.
not rows have image, isnt required.
i have tried using solution stated here retrieving image in phpexcel
but gets of images. not if not every row has image. wont know image belongs row.
any help appreciatted
i able working next script.
if ($_files['file_source']['tmp_name']) { // our import file extension ${'extension'} = strtolower(array_pop(explode('.', $_files['file_source']['name']))); // store our content array ${'accounts'} = array(); if (${'extension'} == 'xls' || ${'extension'} == 'xlsx') { // create new excel instance if (${'extension'} == 'xlsx') { $objreader = phpexcel_iofactory::createreader('excel2007'); } else { $objreader = phpexcel_iofactory::createreader('excel5'); } $objreader->setreaddataonly(false); $objphpexcel = $objreader->load($_files['file_source']['tmp_name']); $objworksheet = $objphpexcel->getactivesheet(); // check columns , column titles if($objphpexcel->getactivesheet()->getcellbycolumnandrow(0, 1)->getvalue() != 'post title' || $objphpexcel->getactivesheet()->getcellbycolumnandrow(1, 1)->getvalue() != 'content' || $objphpexcel->getactivesheet()->getcellbycolumnandrow(2, 1)->getvalue() != 'link' || $objphpexcel->getactivesheet()->getcellbycolumnandrow(3, 1)->getvalue() != 'link title' || $objphpexcel->getactivesheet()->getcellbycolumnandrow(4, 1)->getvalue() != 'link description' || $objphpexcel->getactivesheet()->getcellbycolumnandrow(5, 1)->getvalue() != 'image'){ echo json_encode(array('response'=>'fail', 'reason'=>'column_error')); exit; } // total number of rows in spreadsheet $rows = $objworksheet->gethighestrow(); // check each row contains required info $row_errors = 0; $row = 1; // skip first row if has our column names (((($objphpexcel->getactivesheet()->getcellbycolumnandrow(0, $row)->getvalue()) == 'post title') ? $row = 2 : $row = 1); $row <= $rows; ++$row) { // sanitize our & add together them accounts array if($objphpexcel->getactivesheet()->getcellbycolumnandrow(0, $row)->getvalue() == '') { $row_errors++; } if($objphpexcel->getactivesheet()->getcellbycolumnandrow(1, $row)->getvalue() == '') { $row_errors++; } } if($row_errors>0){ echo json_encode(array('response'=>'fail', 'reason'=>'required_data')); exit; } // loop through rows (line items) $row = 1; ${'iterator'} = 0; // skip first row if has our column names (((($objphpexcel->getactivesheet()->getcellbycolumnandrow(0, $row)->getvalue()) == 'post title') ? $row = 2 : $row = 1); $row <= $rows; ++$row) { // sanitize our & add together them accounts array ${'accounts'}[${'iterator'}] = array('post title' => inputcleansql($objphpexcel->getactivesheet()->getcellbycolumnandrow(0, $row)->getvalue()), 'content' => inputcleansql($objphpexcel->getactivesheet()->getcellbycolumnandrow(1, $row)->getvalue()), 'link' => inputcleansql($objphpexcel->getactivesheet()->getcellbycolumnandrow(2, $row)->getvalue()), 'link title' => inputcleansql($objphpexcel->getactivesheet()->getcellbycolumnandrow(3, $row)->getvalue()), 'link description' => inputcleansql($objphpexcel->getactivesheet()->getcellbycolumnandrow(4, $row)->getvalue()) ); // check if there corresponding image row foreach ($objphpexcel->getactivesheet()->getdrawingcollection() $drawing) { if ($drawing instanceof phpexcel_worksheet_memorydrawing) { $cellid = $drawing->getcoordinates(); if($cellid == phpexcel_cell::stringfromcolumnindex(5).$row){ ob_start(); call_user_func( $drawing->getrenderingfunction(), $drawing->getimageresource() ); $imagecontents = ob_get_contents(); ob_end_clean(); $filetype = $drawing->getmimetype(); $filename = md5(microtime()); switch ($filetype) { case 'image/gif': $image = imagecreatefromstring($imagecontents); imagegif($image, "/var/www/social/uploads/i/$filename.gif", 100); $new_file = "$filename.gif"; break; case 'image/jpeg': $image = imagecreatefromstring($imagecontents); imagejpeg($image, "/var/www/social/uploads/i/$filename.jpeg", 100); $new_file = "$filename.jpeg"; break; case 'image/png': $image = imagecreatefromstring($imagecontents); imagepng($image, "/var/www/social/uploads/i/$filename.png", 100); $new_file = "$filename.png"; break; default: go on 2; } // add together our image location array ${'accounts'}[${'iterator'}]['image'] = array('link'=>'http://imagecdn/'.$new_file, 'type'=>$filetype, 'name'=>$new_file, 'size'=>filesize('/'.$new_file)); } } } // increment our interator ${'iterator'}++; } // if not proper file type throw error } else { echo json_encode(array('response'=>'fail', 'reason'=>'invalid_type')); exit; } } php image phpexcel
No comments:
Post a Comment