温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ThinkPHP6.0内容导 Word的使用方法

发布时间:2020-12-23 09:56:21 来源:亿速云 阅读:789 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关ThinkPHP6.0内容导 Word的使用方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

(一)环境配置

  • 基础环境

    • 系统环境:Windows10 x64

    • PHP集成环境:phpstudy

    • PHP依赖管理工具:Composer

    • 手册:Thinkphp

(二)安装ThinkPHP6.0和Phpword扩展

(1)安装ThinkPHP6.0

composer create-project topthink/think phpword

(2)安装phpword插件

composer require phpoffice/phpword

(三) 内容导出word

(1)内容导出生成word文档

<?php namespace app\admin\service; use Jrk\Tool; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\PhpWord; class WordService {     /**      * @param $text      * @param null $title      * @param bool $save      * @return array      * @throws \PhpOffice\PhpWord\Exception\Exception      * @author: LuckyHhy <jackhhy520@qq.com>      * @describe:      */     public static function exportToword($text,$title=null,$save=false){         $phpWord=new PhpWord(); //实例化         //调整页面样式         $sectionStyle = array('orientation' => null,             'marginLeft' => 300,             'marginRight' => 300,             'marginTop' => 300,             'marginBottom' => 400);         $section = $phpWord->addSection($sectionStyle);         //添加页眉       /*  $header=$section->addHeader();         $k=$header->addTextRun();         //页眉添加一张图片         $k->addImage(app()->getRootPath().'public'.DS."static/images/jrk.jpg",array(             'width'         => '100%',             'height'        => 60,             'marginTop'     => -1,             'marginLeft'    => 1,             'wrappingStyle' => 'behind',         ));*/         //添加页脚         $footer = $section->addFooter();         $f=$footer->addTextRun();         $f->addImage(app()->getRootPath().'public'.DS."static/images/jrk.jpg",array(             'width'         => 105,             'height'        => 65,             'marginTop'     => -1,             'marginLeft'    => 1,             'wrappingStyle' => 'behind',         ));         $footer->addPreserveText('Page {PAGE} of {NUMPAGES}.',array('align'=>'center'));         //添加标题         if (!empty($title)){             $section->addText(                 $title,                 array('name' => '黑体', 'size' => 15),                 array('align'=>'center')             );         }         //添加换行符         $section->addTextBreak(2);         //添加文本         if (is_array($text)){             foreach ($text as $v){                 $section->addText(                     $v,                     array('name' => 'Arial', 'size' => 13),                     array('lineHeight'=>1.5,'indent'=>1)                 );             }         }else{             $section->addText(                 $text,                 array('name' => 'Arial', 'size' => 13),                 array('lineHeight'=>1.5,'indent'=>1)             );         }         $fname=Tool::uniqidDateCode();         if ($save){             /*保存文档到本地*/             $objwrite =IOFactory::createWriter($phpWord);             $t=date("Ymd",time());             //保存的路径和中文名称适应             $dir      = iconv("UTF-8", "GBK", app()->getRootPath().'public'.DS.'words'.DS.$t);             if (!file_exists($dir)) {                 @mkdir($dir, 0777, true);             }             $pa = $t."/".$fname.".docx";             $objwrite->save(app()->getRootPath().'public'.DS.'phpoffices/words'.DS.$pa);             return  ['code'=>1,'url'=>'/phpoffices/words/'.$pa,'domain'=>request()->domain(true)];         }else{             //不保存到服务器,直接输出浏览器下载             $name=$fname.".docx"; //文件名称             $phpWord->save($name,"Word2007",true);         }         exit;     } }

(2)内容生成 html 文件

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

感谢各位的阅读!关于ThinkPHP6.0内容导 Word的使用方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI