php用PHPWord库生成word文档的例子
<?php require_once '../libs/PHPWord/PHPWord/IOFactory.php'; require_once '../../config.php'; $PHPWord = new PHPWord(); /**********文本格式的word text.php************/ // New portrait section //逗号 分割字符串 $arr = $_REQUEST['arr']; $a = explode(',',$arr); //echo $arr; date_default_timezone_set("Asia/Shanghai");//设置一个时区 $tm=date('Y-m-d H:i:s'); $section = $PHPWord->createSection(); $PHPWord->addFontStyle('rStyle', array('bold'=>false, 'italic'=>false, 'size'=>16)); $PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100)); $c = "前三日雨量报表"; $section->addText($c, 'rStyle', 'pStyle'); //生成表格 $styleTable = array('borderSize'=>6, 'borderColor'=>'006699', 'cellMargin'=>80); $styleFirstRow = array('borderBottomSize'=>18, 'borderBottomColor'=>'0000FF', 'bgColor'=>'66BBFF'); // Define cell style arrays $styleCell = array('valign'=>'center'); // Define font style for first row $fontStyle = array('bold'=>true, 'align'=>'center'); //设置标题 $PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16)); $PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100)); // Add table style $PHPWord->addTableStyle('myOwnTableStyle', $styleTable, $styleFirstRow); // Add table $table = $section->addTable('myOwnTableStyle'); // Add row设置行高 $table->addRow(500); $table->addCell(2300, $styleCell)->addText('站码', $fontStyle); $table->addCell(2300, $styleCell)->addText('站名', $fontStyle); $table->addCell(2300, $styleCell)->addText('雨量', $fontStyle); $table->addCell(2300, $styleCell)->addText('水文站监测类型', $fontStyle); $conn = mssql_connect($config['mssql']['host'],$config['mssql']['user'],$config['mssql']['password']); mssql_select_db($config['mssql']['dbname'],$conn); $stm = date('Y-m-d H:i:s',strtotime('-3 days')); $sql = "EXEC HNOW05_GETPPSPACE '','','".$stm."',1,1"; $res=mssql_query($sql); while($arr = mssql_fetch_array($res)){ $table->addRow(); $table->addCell(2300)->addText($arr["STCD"]); $table->addCell(2300)->addText($arr["STNM"]); $table->addCell(2300)->addText($arr["P"]); if($arr["STTP"] == 'MM'){ $table->addCell(2300)->addText('气象站'); }else if($arr["STTP"] == 'BB'){ $table->addCell(2300)->addText('蒸发站'); }else if($arr["STTP"] == 'DD'){ $table->addCell(2300)->addText('堰闸水文站'); }else if($arr["STTP"] == 'TT'){ $table->addCell(2300)->addText('落潮位站'); }else if($arr["STTP"] == 'DP'){ $table->addCell(2300)->addText('泵站'); }else if($arr["STTP"] == 'SS'){ $table->addCell(2300)->addText('墒情站'); }else if($arr["STTP"] == 'PP'){ $table->addCell(2300)->addText('雨量站'); }else if($arr["STTP"] == 'ZZ'){ $table->addCell(2300)->addText('河道水位水文站'); }else if($arr["STTP"] == 'RR'){ $table->addCell(2300)->addText('水库水文站'); }else if($arr["STTP"] == 'ZG'){ $table->addCell(2300)->addText('地下水站'); }else if($arr["STTP"] == 'ZB'){ $table->addCell(2300)->addText('分洪水位站'); } } $section->addTextBreak(2); $section = $PHPWord->createSection(); $PHPWord->addFontStyle('rStyle', array('bold'=>false, 'italic'=>false, 'size'=>16)); $PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100)); $c = "地质灾害"; $section->addText($c, 'rStyle', 'pStyle'); $content="根据市气象局未来24小时降雨预报和市水利局实时降雨数据,市国土资源局进行了地质灾害预报,请有关部门关注实时预警信息,做好地质灾害防范工作"; $section->addText($content); // Add image elements $section->addImage("images/image001.jpg", array('width'=>600, 'height'=>480, 'align'=>'center')); // Save File $fileName = "word报表".date("YmdHis"); header("Content-type: application/vnd.ms-word"); header("Content-Disposition:attachment;filename=".$fileName.".docx"); header('Cache-Control: max-age=0'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter->save('php://output'); ?>
注意:要将PHPWord\PHPWord\Template.php中的setValue方法下的编码改成$replace = iconv('gbk', 'utf-8',$replace);其他的文件也要改成这种样式的。否则出现中文乱码。