1. 程式人生 > >PhpWord的一些簡單用法

PhpWord的一些簡單用法

  因為最近專案需要一個生成Word文件的功能,開始折騰起來,找到PhoWord這個類庫,PhpWord是一個可以用PHP生成word的類庫,用composer安裝就可以用了。
  搞了半天,終於生成了Word文件,現在來記錄一下一些用法供大家參考。

使用環境
  目前是在ThinkPHP5.0.21中使用的PhpWord,其他使用環境引入方式可能會有一點不同。
  使用composer安裝,直接使用下面的程式碼引入相關類庫

安裝
  1、開啟命令列進入專案根目錄執行下面命令
  2、composer require phpoffice/phpword

使用模式
  1、直接使用程式碼編寫word文件
  2、讀取原有word模板,替換相關變數

模板生成Word
  使用場景:適合有一套固定的模板,只有幾個關鍵的地方需要改變。
  使用方式:下面介紹幾行程式碼就足夠完成整個word的替換了,需要更多功能參考文件。

	//模板的路徑,word的版本最好是docx,要不然可能會讀取不了,根據自己的模板位置調整
	$path = 'public/letters/templates/word/letter1.docx';

	//生成word路徑,根據自己的目錄調整
	$filePath= 'public/letters/word/letter1.docx';

	//宣告一個模板物件、讀取模板
	$templateProcessor = new \PhpOffice\
PhpWord\TemplateProcessor
($path); //替換模板中的變數,對應word裡的 ${test} $test ="這是替換的內容"; $templateProcessor->setValue('test',$test);//傳真 //生成新的word $templateProcessor->saveAs($filePath);

程式碼編寫Word
  使用場景:需要更加靈活的生成Word
  語法介紹:介紹一些常用的、需要的功能,多餘的也不介紹了,來些直觀的才是重要的,需要更多功能參考文件。

	//宣告一個phpword物件
	$phpWord = new
\PhpOffice\PhpWord\PhpWord(); //宣告一個頁面,用來存放頁面的內容,相當於一個容器 $section = $phpWord->addSection(); //新增一個段落文字 $section->addText('This is text'); //宣告普通文字,不同段落文字,可以在後面追加文字 $textrun = $section->addTextRun(); //新增文字 $textrun->addText('This '); //再上面內容的後面追加文字 $textrun->addText('is'); //文字換行,引數可以控制換行的行數 $textrun->addTextBreak(1); //段落文字換行,引數可以控制換行的行數 $section->addTextBreak(1); //文字樣式,可以指定許多樣式,具體可以參考文件字型樣式 $textrun->addText('測試',array('size'=>18,'bold'=>true,'name'=>'宋體')); //可以定義一個數組傳進去,本質都是一個數組 $fontStyle['size']=12; $fontStyle['bold']=true; $textrun->addText('測試',$fontStyle); //生成Word文件 $filePath= 'public/letters/word/letter1.docx'; $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007'); $objWriter->save($filePath);

PS:
  1、Phpword雖然可以用程式碼生成word,但對於一些文字圖片的定位操控起來非常麻煩,甚至無法控制。

  2、儘量使用模板,直接改動模板更加方便,只替換一些關鍵字就好。

  3、使用模板的時候要注意word格式要是docx,使用doc可能會報錯。

結語
  以上是自己這幾天使用Phpword小小心得,希望大家少走彎路吧,也給自己以後再使用時可以溫習下,如有不正確之處,還望指出。