Home > PHP Framework > ThinkPHP > Share ThinkPHP6.0 content export Word case

Share ThinkPHP6.0 content export Word case

藏色散人
Release: 2020-12-23 09:42:05
forward
2896 people have browsed it

The following is the thinkphp framework tutorial column to introduce to you the ThinkPHP6.0 content export Word case. I hope it will be helpful to friends in need!

Share ThinkPHP6.0 content export Word case

(1) Environment configuration

  • Basic environment
    • System Environment: Windows10 x64
    • PHP integrated environment: phpstudy
    • PHP dependency management tool: Composer
    • Manual: Thinkphp

(2) Install ThinkPHP6.0 and Phpword extension

(1) Install ThinkPHP6.0

composer create-project topthink/think phpword
Copy after login

(2) Install phpword plug-in

composer require phpoffice/phpword
Copy after login

(3) Content export word

(1) Content export to generate word document

<?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(&#39;orientation&#39; => null,
            &#39;marginLeft&#39; => 300,
            &#39;marginRight&#39; => 300,
            &#39;marginTop&#39; => 300,
            &#39;marginBottom&#39; => 400);
        $section = $phpWord->addSection($sectionStyle);
        //添加页眉
      /*  $header=$section->addHeader();
        $k=$header->addTextRun();
        //页眉添加一张图片
        $k->addImage(app()->getRootPath().&#39;public&#39;.DS."static/images/jrk.jpg",array(
            &#39;width&#39;         => &#39;100%&#39;,
            &#39;height&#39;        => 60,
            &#39;marginTop&#39;     => -1,
            &#39;marginLeft&#39;    => 1,
            &#39;wrappingStyle&#39; => &#39;behind&#39;,
        ));*/

        //添加页脚
        $footer = $section->addFooter();
        $f=$footer->addTextRun();

        $f->addImage(app()->getRootPath().&#39;public&#39;.DS."static/images/jrk.jpg",array(
            &#39;width&#39;         => 105,
            &#39;height&#39;        => 65,
            &#39;marginTop&#39;     => -1,
            &#39;marginLeft&#39;    => 1,
            &#39;wrappingStyle&#39; => &#39;behind&#39;,
        ));

        $footer->addPreserveText(&#39;Page {PAGE} of {NUMPAGES}.&#39;,array(&#39;align&#39;=>&#39;center&#39;));

        //添加标题
        if (!empty($title)){
            $section->addText(
                $title,
                array(&#39;name&#39; => &#39;黑体&#39;, &#39;size&#39; => 15),
                array(&#39;align&#39;=>&#39;center&#39;)
            );
        }
        //添加换行符
        $section->addTextBreak(2);

        //添加文本
        if (is_array($text)){
            foreach ($text as $v){
                $section->addText(
                    $v,
                    array(&#39;name&#39; => &#39;Arial&#39;, &#39;size&#39; => 13),
                    array(&#39;lineHeight&#39;=>1.5,&#39;indent&#39;=>1)
                );
            }
        }else{
            $section->addText(
                $text,
                array(&#39;name&#39; => &#39;Arial&#39;, &#39;size&#39; => 13),
                array(&#39;lineHeight&#39;=>1.5,&#39;indent&#39;=>1)
            );
        }
        $fname=Tool::uniqidDateCode();
        if ($save){
            /*保存文档到本地*/
            $objwrite =IOFactory::createWriter($phpWord);
            $t=date("Ymd",time());
            //保存的路径和中文名称适应
            $dir      = iconv("UTF-8", "GBK", app()->getRootPath().&#39;public&#39;.DS.&#39;words&#39;.DS.$t);
            if (!file_exists($dir)) {
                @mkdir($dir, 0777, true);
            }
            $pa = $t."/".$fname.".docx";
            $objwrite->save(app()->getRootPath().&#39;public&#39;.DS.&#39;phpoffices/words&#39;.DS.$pa);
            return  [&#39;code&#39;=>1,&#39;url&#39;=>&#39;/phpoffices/words/&#39;.$pa,&#39;domain&#39;=>request()->domain(true)];
        }else{
            //不保存到服务器,直接输出浏览器下载
            $name=$fname.".docx"; //文件名称
            $phpWord->save($name,"Word2007",true);
        }
        exit;
    }
}
Copy after login

(2) Content generation html file

 /**
     * @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 = &#39;oneUserDefinedStyle&#39;;
        $phpWord->addFontStyle(
            $fontStyleName,
            array(&#39;name&#39; => &#39;Tahoma&#39;, &#39;size&#39; => 13, &#39;color&#39; => &#39;1B2232&#39;, &#39;bold&#39; => 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, &#39;HTML&#39;);
            $t=date("Ymd",time());
            //保存的路径和中文名称适应
            $dir      = iconv("UTF-8", "GBK", app()->getRootPath().&#39;public&#39;.DS.&#39;phpoffices/htmls&#39;.DS.$t);
            if (!file_exists($dir)) {
                @mkdir($dir, 0777, true);
            }
            $pa = $t."/".$fname.".html";
            $objwrite->save(app()->getRootPath().&#39;public&#39;.DS.&#39;phpoffices/htmls&#39;.DS.$pa);
            return  [&#39;code&#39;=>1,&#39;url&#39;=>&#39;/phpoffices/htmls/&#39;.$pa,&#39;domain&#39;=>request()->domain(true)];
        }else{
            $name=$fname.".html"; //文件名称
            $phpWord->save($name,"HTML",true);
        }
        exit;
    }
Copy after login

The above is the detailed content of Share ThinkPHP6.0 content export Word case. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template