我给封装成函数了 加一些注释
function expordWord($data,$title) { vendor("PHPWord.PHPWord"); // New Word Document $PHPWord = new \PHPWord(); header("Content-Type: text/html; charset=UTF-8"); $PHPWord->addFontStyle(\'rStyle\', array(\'bold\' => true, \'italic\' => true, \'size\' => 12));//定义样式 $PHPWord->addParagraphStyle(\'pStyle\', array(\'align\' => \'center\', \'spaceAfter\' => 100)); $PHPWord->addTitleStyle(\'titlestyle\', array(\'bold\' => true,\'size\' => 16),array(\'spaceAfter\' => 240,\'align\' => \'center\'));//标题的样式 $section = $PHPWord->createSection();//创建新页面 $section->addTitle($title,\'titlestyle\'); $section->addTextBreak(2); foreach($data as $k=>$v) { $section->addText(\'题号:\'.$v[\'no\'],\'rStyle\'); $section->addImage($v[\'pimg\'], array(\'width\'=>500, \'height\'=>90)); $section->addTextBreak(2); $section->addText(\'答案:\'); $section->addImage($v[\'aimg\'], array(\'width\'=>500, \'height\'=>90)); $section->addTextBreak(4); } $xlsTitle = iconv(\'utf-8\', \'gb2312\');//文件名称 $fileName = $_SESSION[\'account\'].date(\'_YmdHis\');//or $xlsTitle 文件名称可根据自己情况设定 header(\'pragma:public\'); header(\'Content-type:application/vnd.ms-word;charset=utf-8;name="\'.$xlsTitle.\'.docx"\'); header("Content-Disposition:attachment;filename=$fileName.docx");//attachment新窗口打印inline本窗口打印 header( \'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document\'); ob_clean();//关键 flush();//关键 $objWrite = \PHPWord_IOFactory::createWriter($PHPWord, \'Word2007\'); $objWrite->save(\'php://output\'); exit; }
调用
public function test() { $data=array( 0=>array(\'no\'=>1,\'pimg\'=>\'./uploads/questionanswer/2019-12-07/5deb1c575125d_a_1575706883819_0.jpg\',\'aimg\'=>\'./uploads/questionanswer/2019-12-07/5deb1c575125d_a_1575706883819_0.jpg\'), 1=>array(\'no\'=>2,\'pimg\'=>\'./uploads/questionanswer/2019-12-07/5deb1c575125d_a_1575706883819_0.jpg\',\'aimg\'=>\'./uploads/questionanswer/2019-12-07/5deb1c575125d_a_1575706883819_0.jpg\'), ); expordWord($data,\'试卷名称\'); }
样子