因为工作需要,需要将页面内容导出到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文档并下载。在实际使用时,可根据实际情况生成文档内容。