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);其餘的文件也要改爲這種樣式的。不然出現中文亂碼。php

相關文章
相關標籤/搜索