PhpWord的一些簡單用法
阿新 • • 發佈:2018-12-21
因為最近專案需要一個生成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小小心得,希望大家少走彎路吧,也給自己以後再使用時可以溫習下,如有不正確之處,還望指出。