WithCoderWithCoderWithCoder

thinkphp3.2集成phpword,生成word文档并下载

    因为工作需要,需要将页面内容导出到word并下载。本文介绍在PHP中如何实现生成word文档并下载。

    开发框架:

        thinkphp3.2

    Word插件:

        PHPWord

    一、安装PHPWord

    安装PHPWord,可以通过下面2中方式:

        1. git地址下载:https://github.com/PHPOffice/PHPWord,下载完成后将文件复制到项目目录下

        2. 使用composer安装,在PhpStorm的命令终端Terminal中,输入以下命令安装(安装完成后,在项目根目录下会增加一个vendor目录,里面为下载的PHPWord):

composer require phpoffice/phpword

    二、在项目中引入PHPWord

    2.1 在index.php文件中,加入以下代码,加载PHPWord(phpword在vendor下)

require './vendor/autoload.php';

    2.2 在需要的controller用命名空间的方式引入PHPWord相关类

use PhpOffice\PhpWord\IOFactory; 
use PhpOffice\PhpWord\PhpWord;

    三、使用PHPWord生成word文档并下载:

function createDoc()
{
    $PHPWord = new PhpWord();
    // New portrait section
    $section = $PHPWord->createSection();
    // Add text elements
    $str5 = "        根据《中华人民共和国合同法》及相关法律法规的规定,甲、乙双方在平等、自愿的基础上,就甲方将房屋出租给乙方使用,乙方承租甲方房屋事宜,为明确双方权利义务,经协商一致,订立本合同。";
    $str1 = "甲    方:                                                           乙    方:";
    $str2 = "甲方签字:                                                           乙方签字:";
    $str3 = "盖章:                                                                盖章:";

    $str4 = "签约时间:20        年        月        日                             签约时间:20         年        月        日";
    $title = '房屋租赁合同';
    $section->addText($title, 'rStyle', 'pStyle');
    $section->addTextBreak(2);
    $section->addText($str5, 'cOntent');
    $section->addTextBreak(2);
    $section->addText($str1, 'cOntent');
    $section->addText($str2, 'cOntent');
    $section->addText($str3, 'cOntent');
    $section->addText($str4, 'cOntent');
    $section->addTextBreak(2);
    $section->addTextBreak(2);
    $PHPWord->addFontStyle('cOntent', array('bold' => false, 'size' => 12));
    $PHPWord->addFontStyle('rStyle', array('bold' => true, 'italic' => false, 'size' => 16, 'align' => 'center'));
    $PHPWord->addParagraphStyle('pStyle', array('align' => 'center', 'spaceAfter' => 100));

    $objWriter = IOFactory::createWriter($PHPWord, 'Word2007');
    $tmpfilename = date("YmdHis");
    $path = 'wordfile/' . $tmpfilename . '.doc';
    $objWriter->save($path);

    // 下载
    $file1 = fopen($path, "rb");
    // 输入文件标签
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length:" . filesize($path));
    Header("Content-Disposition: attachment;filename=" . $tmpfilename . '.doc');
    ob_clean();     // 重点!!!
    flush();        // 重点!!!!可以清除文件中多余的路径名以及解决乱码的问题:
    //输出文件内容
    //读取文件内容并直接输出到浏览器
    echo fread($file1, filesize($path));
    fclose($file1);

    // 删除临时文件
    unlink($path);

    exit();
}

    以上代码,简单实现生成word文档并下载。在实际使用时,可根据实际情况生成文档内容。

欢迎分享交流,转载请注明出处:WithCoder » thinkphp3.2集成phpword,生成word文档并下载