您好,欢迎访问一九零五行业门户网

:PHPExcel无法加入图片

$objphpexcel = new phpexcel();
$objdrawing = new phpexcel_worksheet_drawing(); 
$objphpexcel->setactivesheetindex(0);
$objdrawing->setpath('d:\wwwroot\user\upimg\201460dzeetjg_1.jpg');
$objdrawing->setcoordinates(a1);
$objdrawing->setworksheet($objphpexcel->getactivesheet());
返回错误:fatal error: uncaught exception 'phpexcel_exception' with message 'a phpexcel_worksheet has already been assigned. drawings can only exist on one phpexcel_worksheet.' in d:\wwwroot\user\upimg\classes\phpexcel\worksheet\basedrawing.php:240 stack trace: #0 d:\wwwroot\user\upimg\xls.php(71): phpexcel_worksheet_basedrawing->setworksheet(object(phpexcel_worksheet)) #1 {main} thrown in d:\wwwroot\user\upimg\classes\phpexcel\worksheet\basedrawing.php on line 240
回复讨论(解决方案) 你这只是片段,仅从这点是看不到问题的!
因为这个代码片段并没有错!
uncaught exception 'exception' with message 'a phpexcel_worksheet has already been assigned. drawings can only exist on one phpexcel_worksheet.'
是说:一个 phpexcel_worksheet_drawing 实例只能在一个单元格中存在
显然你把 $objdrawing 放到 a1 后,又放到了别处
getproperties()->setcreator(fnsr)
 ->setlastmodifiedby(fnsr)
 ->settitle(office 2007 xlsx document)
 ->setsubject(office 2007 xlsx document)
 ->setdescription(document for office 2007 xlsx, generated using php classes.)
 ->setkeywords(office 2007 openxml php)
 ->setcategory(result file);
// add some data
$objphpexcel->setactivesheetindex(0)
            ->setcellvalue('a1', '微信号')
            ->setcellvalue('b1', '名字')
            ->setcellvalue('c1', '身高')
->setcellvalue('d1', '三围')
->setcellvalue('e1', '电话')
->setcellvalue('f1', '简介')
->setcellvalue('g1', '大头')
->setcellvalue('h1', '半身')
->setcellvalue('i1', '全身')
->setcellvalue('j1', '推荐人')
->setcellvalue('k1', '状态');
// miscellaneous glyphs, utf-8
$query = select * from enroll;
$result = $db->query($query);
$num_results = $result->num_rows;
$k=2;
$objdrawing = new phpexcel_worksheet_drawing(); 
for($i=0;$i $row = $result->fetch_assoc();
$objphpexcel->setactivesheetindex(0)
            ->setcellvalue(a.$k, $row['nameid'])
->setcellvalue(b.$k, $row['pname'])
->setcellvalue(c.$k, $row['stature'])
->setcellvalue(d.$k, $row['bust'])
->setcellvalue(e.$k, $row['stel'])
->setcellvalue(f.$k, $row['tips'])
//->setcellvalue(g.$k, )
//->setcellvalue(h.$k, '../upimg/'.$row['nameid'].'_2.jpg')
//->setcellvalue(i.$k, '../upimg/'.$row['nameid'].'_3.jpg')
->setcellvalue(j.$k, $row['refs'])
            ->setcellvalue(k.$k, $row['state']);
//$pa=$_server['document_root'].'\\mweb\\tjnsr\\upimg\\';
//$pa='../upimg/';
if(file_exists($row['nameid'].'_1.jpg')){
$objphpexcel->setactivesheetindex(0);
$objdrawing->setpath('d:\wwwroot\user\upimg\201460dzeetjg_1.jpg');
$objdrawing->setcoordinates(g1);
$objdrawing->setworksheet($objphpexcel->getactivesheet());
}
/*if(file_exists($row['nameid'].'_2.jpg')){
$objdrawing->setpath($row['nameid'].'_2.jpg');
$objdrawing->setcoordinates(h.$k);
$objphpexcel->setactivesheetindex(0)
           ->setcellvalue(h.$k, $row['nameid'].'_2.jpg');
//$objdrawing->setworksheet($objphpexcel->getactivesheet());
}
if(file_exists($row['nameid'].'_3.jpg')){
$objdrawing->setpath($row['nameid'].'_3.jpg');
$objdrawing->setcoordinates(i.$k);
$objphpexcel->setactivesheetindex(0)
           ->setcellvalue(i.$k, $row['nameid'].'_3.jpg');
//$objdrawing->setworksheet($objphpexcel->getactivesheet());
}*/
$k++;
}
$result->free();
$db->close();
//$objphpexcel->setactivesheetindex(0)
 //           ->setcellvalue('a5', $pa);
// rename worksheet
$objphpexcel->getactivesheet()->settitle('联系表');
// set active sheet index to the first sheet, so excel opens this as the first sheet
$objphpexcel->setactivesheetindex(0);
// redirect output to a client’s web browser (excel5)
header('content-type: application/vnd.ms-excel');
header('content-disposition: attachment;filename=报名人员表.xls');
header('cache-control: max-age=0');
// if you're serving to ie 9, then the following may be needed
header('cache-control: max-age=1');
// if you're serving to ie over ssl, then the following may be needed
header ('expires: mon, 26 jul 1997 05:00:00 gmt'); // date in the past
header ('last-modified: '.gmdate('d, d m y h:i:s').' gmt'); // always modified
header ('cache-control: cache, must-revalidate'); // http/1.1
header ('pragma: public'); // http/1.0
$objwriter = phpexcel_iofactory::createwriter($objphpexcel, 'excel5');
$objwriter->save('php://output');
exit;
对呀!
你的 $objdrawing = new phpexcel_worksheet_drawing();  在循环外面
而 $objdrawing->setworksheet($objphpexcel->getactivesheet()); 在循环里面
你如何能保证 $objdrawing = new phpexcel_worksheet_drawing(); 只被这行一次呢?
虽然是套在条件分支中的,你有如何能保证条件只成立一次呢?
你只需把 $objdrawing = new phpexcel_worksheet_drawing(); 放到循环里面,一切都解决了
多谢,问题找到,但是xls文档打不开
代码修改:            if(file_exists($row['nameid'].'_1.jpg')){
$objdrawing[$k] = new phpexcel_worksheet_drawing(); 
$objdrawing[$k]->setpath($row['nameid'].'_1.jpg');
$objdrawing[$k]->setcoordinates(g.$k);
$objdrawing[$k]->setworksheet($objphpexcel->getactivesheet());
}
其它类似信息

推荐信息