分享 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 分享