分享 ThinkPHP6.0 內容導出 Word 案例

下面由thinkphp框架教程欄目給大家介紹?thinkphp6.0 內容導出 word 案例,希望對需要的朋友有所幫助!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

分享 ThinkPHP6.0 內容導出 Word 案例

(一)環境配置

  • 基礎環境
    • 系統環境:Windows10 x64
    • PHP集成環境:phpstudy
    • PHP依賴管理工具:composer
    • 手冊:Thinkphp

(二)安裝ThinkPHP6.0和Phpword擴展

(1)安裝ThinkPHP6.0

composer create-project topthink/think phpword

(2)安裝phpword插件

立即學習PHP免費學習筆記(深入)”;

composer require phpoffice/phpword

(三) 內容導出word

(1)內容導出生成word文檔

<?php namespace appadminservice;  use JrkTool; use PhpOfficePhpWordIOFactory; use PhpOfficePhpWordPhpWord;  class WordService {     /**      * @param $text      * @param null $title      * @param bool $save      * @return array      * @throws PhpOfficePhpWordExceptionException      * @author: LuckyHhy <jackhhy520@qq.com> ?????*?@describe: ?????*/ ????public?static?function?exportToword($text,$title=null,$save=false){ ????????$phpWord=new?PhpWord();?//實例化 ????????//調整頁面樣式 ????????$sectionStyle?=?array('orientation'?=&gt;?null, ????????????'marginLeft'?=&gt;?300, ????????????'marginRight'?=&gt;?300, ????????????'marginTop'?=&gt;?300, ????????????'marginBottom'?=&gt;?400); ????????$section?=?$phpWord-&gt;addSection($sectionStyle); ????????//添加頁眉 ??????/*??$header=$section-&gt;addHeader(); ????????$k=$header-&gt;addTextRun(); ????????//頁眉添加一張圖片 ????????$k-&gt;addImage(app()-&gt;getRootPath().'public'.DS."static/images/jrk.jpg",array( ????????????'width'?????????=&gt;?'100%', ????????????'height'????????=&gt;?60, ????????????'marginTop'?????=&gt;?-1, ????????????'marginLeft'????=&gt;?1, ????????????'wrappingStyle'?=&gt;?'behind', ????????));*/  ????????//添加頁腳 ????????$footer?=?$section-&gt;addFooter(); ????????$f=$footer-&gt;addTextRun();  ????????$f-&gt;addImage(app()-&gt;getRootPath().'public'.DS."static/images/jrk.jpg",array( ????????????'width'?????????=&gt;?105, ????????????'height'????????=&gt;?65, ????????????'marginTop'?????=&gt;?-1, ????????????'marginLeft'????=&gt;?1, ????????????'wrappingStyle'?=&gt;?'behind', ????????));  ????????$footer-&gt;addPreserveText('Page?{PAGE}?of?{NUMPAGES}.',array('align'=&gt;'center'));  ????????//添加標題 ????????if?(!empty($title)){ ????????????$section-&gt;addText( ????????????????$title, ????????????????array('name'?=&gt;?'黑體',?'size'?=&gt;?15), ????????????????array('align'=&gt;'center') ????????????); ????????} ????????//添加換行符 ????????$section-&gt;addTextBreak(2);  ????????//添加文本 ????????if?(is_array($text)){ ????????????foreach?($text?as?$v){ ????????????????$section-&gt;addText( ????????????????????$v, ????????????????????array('name'?=&gt;?'Arial',?'size'?=&gt;?13), ????????????????????array('lineHeight'=&gt;1.5,'indent'=&gt;1) ????????????????); ????????????} ????????}else{ ????????????$section-&gt;addText( ????????????????$text, ????????????????array('name'?=&gt;?'Arial',?'size'?=&gt;?13), ????????????????array('lineHeight'=&gt;1.5,'indent'=&gt;1) ????????????); ????????} ????????$fname=Tool::uniqidDateCode(); ????????if?($save){ ????????????/*保存文檔到本地*/ ????????????$objwrite?=IOFactory::createWriter($phpWord); ????????????$t=date("Ymd",time()); ????????????//保存的路徑和中文名稱適應 ????????????$dir??????=?iconv("UTF-8",?"GBK",?app()-&gt;getRootPath().'public'.DS.'words'.DS.$t); ????????????if?(!file_exists($dir))?{ ????????????????@mkdir($dir,?0777,?true); ????????????} ????????????$pa?=?$t."/".$fname.".docx"; ????????????$objwrite-&gt;save(app()-&gt;getRootPath().'public'.DS.'phpoffices/words'.DS.$pa); ????????????return??['code'=&gt;1,'url'=&gt;'/phpoffices/words/'.$pa,'domain'=&gt;request()-&gt;domain(true)]; ????????}else{ ????????????//不保存到服務器,直接輸出瀏覽器下載 ????????????$name=$fname.".docx";?//文件名稱 ????????????$phpWord-&gt;save($name,"Word2007",true); ????????} ????????exit; ????} }

(2)內容生成 html 文件

?/** ?????*?@param?$text ?????*?@param?bool?$save ?????*?@return?array ?????*?@throws?PhpOfficePhpWordExceptionException ?????*?@author:?LuckyHhy?<jackhhy520> ?????*?@describe: ?????*/ ????public?static?function?makeHtml($text,$save=false){ ????????$phpWord=new?PhpWord();?//實例化 ????????$section?=?$phpWord-&gt;addSection();  ????????$fontStyleName?=?'oneUserDefinedStyle'; ????????$phpWord-&gt;addFontStyle( ????????????$fontStyleName, ????????????array('name'?=&gt;?'Tahoma',?'size'?=&gt;?13,?'color'?=&gt;?'1B2232',?'bold'?=&gt;?true) ????????); ????????if?(is_array($text)){ ????????????foreach?($text?as?$v){ ????????????????$section-&gt;addText( ????????????????????$v, ????????????????????$fontStyleName ????????????????); ????????????} ????????}else{ ????????????$section-&gt;addText( ????????????????$text, ????????????????$fontStyleName ????????????); ????????} ????????$fname=Tool::uniqidDateCode(); ????????if?($save){ ????????????$objwrite?=?IOFactory::createWriter($phpWord,?'HTML'); ????????????$t=date("Ymd",time()); ????????????//保存的路徑和中文名稱適應 ????????????$dir??????=?iconv("UTF-8",?"GBK",?app()-&gt;getRootPath().'public'.DS.'phpoffices/htmls'.DS.$t); ????????????if?(!file_exists($dir))?{ ????????????????@mkdir($dir,?0777,?true); ????????????} ????????????$pa?=?$t."/".$fname.".html"; ????????????$objwrite-&gt;save(app()-&gt;getRootPath().'public'.DS.'phpoffices/htmls'.DS.$pa); ????????????return??['code'=&gt;1,'url'=&gt;'/phpoffices/htmls/'.$pa,'domain'=&gt;request()-&gt;domain(true)]; ????????}else{ ????????????$name=$fname.".html";?//文件名稱 ????????????$phpWord-&gt;save($name,"HTML",true); ????????} ????????exit; ????}</jackhhy520>

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享