ThinkPHP6.0内容导 Word的使用方法
创始人
2024-12-26 23:00:42
0次

(一)环境配置

  • 基础环境

    • 系统环境: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文档


     * @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 
     * @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;
    }

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...