Phpword+thinkphp5

折腾了一天最终是用Composer来完成,因为直接官网下的https://github.com/PHPOffice/PHPWord中找不到common文件,会报找不到Text,

弄好之后直接访问控制器对应方法就可以下载下来,打开就会看到内容,更多内容正在完善中,尽情期待吧

用Composer下下来后安装下载phpword,会生成一个文件,如下图所示,打开vendor复制里面的phpoffice到thinkphp5项目中的extend下,将phpoffice改为PhpOffice,因为里面大部分命名空间都是use PhpOffice\PhpWord…;
在这里插入图片描述
在项目的controller下建立Word控制器
内容如下:

<?php
/**
 * Created by PhpStorm.
 * User: insist
 * Date: 2019/1/22
 * Time: 10:25
 */
/**
 * Created by PhpStorm.
 * User: insist
 * Date: 2018/12/4
 * Time: 16:31
 */
namespace app\index\controller;

use PhpOffice\Common\Font;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\PhpWord;
use think\Controller;


class Word extends Controller
{
    public function index(){

        // Create a new PHPWord Object
        $PHPWord = new PhpWord();
        $PHPWordHelper= new Font();

        $PHPWord->setDefaultFontName('隶书');  // 全局字体
        $PHPWord->setDefaultFontSize(16);       // 全局字号为3号

        // 设置文档的属性,这些在对文档右击属性可以看到,也可以省去这些步骤
        $properties = $PHPWord->getDocumentProperties();
        $properties->setCreator('陶永斌');   // 创建者
        $properties->setCompany('笑口袋'); // 公司
        $properties->setTitle('某某文档'); // 标题
        $properties->setCreated( time() );      // 创建时间
        $properties->setModified( time() );     // 修改时间



        // 添加3号仿宋字体到'FangSong16pt'留着下面使用
        $PHPWord->addFontStyle('FangSong16pt', array('name'=>'仿宋', 'size'=>16));

        // 添加段落样式到'Normal'以备下面使用
        $PHPWord->addParagraphStyle(
            'Normal',array(
                'align'=>'both',
                'spaceBefore' => 0,
                'spaceAfter' => 0,
                'spacing'=>$PHPWordHelper->pointSizeToTwips(2.8),
                'lineHeight' => 1.19,  // 行间距
                'indentation' => array( // 首行缩进
                    'firstLine' => $PHPWordHelper->pointSizeToTwips(32)
                )
            )
        );

        // Section样式:上3.5厘米、下3.8厘米、左3厘米、右3厘米,页脚3厘米
        // 注意这里厘米(centimeter)要转换为twips单位
        $sectionStyle = array(
            'orientation' => 'landscape',                                                       //页面方向: 默认竖向:null/横向:landscape
            'marginLeft' => $PHPWordHelper->centimeterSizeToTwips(0),
            'marginRight' => $PHPWordHelper->centimeterSizeToTwips(0),
            'marginTop' => $PHPWordHelper->centimeterSizeToTwips(0),
            'marginBottom' => $PHPWordHelper->centimeterSizeToTwips(0),
            'pageNumberingStart' => 1, // 页码从1开始
            'footerHeight' => $PHPWordHelper->centimeterSizeToTwips(0),
        );
        $section = $PHPWord->addSection($sectionStyle); // 添加一节

        // 下面这句是输入文档内容,注意这里用到了刚才我们添加的
        // 字体样式FangSong16pt和段落样式Normal
        $section->addText('某某某文案策划', 'FangSong16pt', 'Normal');
        $section->addLink(
            'https://blog.csdn.net/qq_28761593/article/details/86598754',
            'tp5+phpword',
            array(
                'size'=>20,
                'name'=>'微软雅黑',
                'bold'=>true,
                'Color'=>'#f00',),
            null
        );
        $section->addTextBreak(1); // 新起一个空白段落
        header("Content-Type: application/doc");
        header("Content-Disposition: attachment; filename=".date("YmdHis").".doc");
        $objWriter = IOFactory::createWriter($PHPWord, 'Word2007');

        $objWriter->save('php://output');
    }


}

猜你喜欢

转载自blog.csdn.net/qq_28761593/article/details/86639896