700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php导出word html转换为word文档 (原生+phpword)

php导出word html转换为word文档 (原生+phpword)

时间:2023-10-02 05:12:03

相关推荐

php导出word html转换为word文档 (原生+phpword)

将html内容转换成word文档,有两种实现方式

1、直接输入html内容到word文档中

优点:简单粗暴,基本上支持所有html标签和样式

缺点:无法操作word文档其他功能,例如页码,页眉,目录之类的

代码:

$html = '';$data = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="/TR/REC-html40">'.$html.'</html>';$dir = "../public/";if(!file_exists($dir)) mkdir($dir,777,true);$fileName=$dir.date('His').'.doc';$writefile = fopen($fileName,'wb') or die("创建文件失败"); //wb以二进制写入fwrite($writefile,$data);fclose($writefile);

2、使用phpword导出

优点:提供了丰富的操作word文档的功能

缺点:对html标签、样式的支持不够全面,有些样式可能会失效

代码:

<?phpnamespace Alqm\Api\Tools;use PhpOffice\PhpWord\Shared\ZipArchive;use PhpOffice\PhpWord\TemplateProcessor;class OfficeWord{public $path = 'word/';public function createWord($data){$phpWord = new \PhpOffice\PhpWord\PhpWord();//打开时自动重新计算字段$phpWord->getSettings()->setUpdateFields(true);//关闭拼写和语法检查,大内容文档可以提高打开速度$phpWord->getSettings()->setHideGrammaticalErrors(true);$phpWord->getSettings()->setHideSpellingErrors(true);//文档设置$properties = $phpWord->getDocInfo();$properties->setCreator('xiaoming');//作者$properties->setTitle('title');//标题$properties->setSubject('subject');//主题//添加一页$section = $phpWord->addSection();//创建一页//设置页码$footer = $section->addFooter();$footer->addPreserveText('{PAGE} / {NUMPAGES}', ['bold' => true,//粗体], ['alignment' => \PhpOffice\PhpWord\SimpleType\Jc::END,//对其方式]);//page 1 title$section->addTextBreak(10);//添加多个回车$fontStyle = [//字体样式'size' => 30,//字号'bold' => true,//粗体'name' => 'stsongstdlight',//字体];$paragraphStyle = [//段落样式'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER,//对其方式];$section->addText($data->title, $fontStyle, $paragraphStyle);//page 2 list$section->addPageBreak();//新建一页,也可以用$section = $phpWord->addSection();$phpWord->addTitleStyle(1, $fontStyle);$toc = $section->addTOC();//page 3 content$section->addPageBreak();//分页$section->addTitle($data->title);//标题\PhpOffice\PhpWord\Shared\Html::addHtml($section, $content);//saveif (!is_dir($this->path)) {mkdir($this->path, 0777, true);}$word_name = $this->path . $data->title . '_' . $data->version_no . '.docx';$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word');$objWriter->save($word_name);return $word_name ;}}

使用phpword过程中也遇到一些问题,在这里记录下解决过程

1、生成的目录后面的页码丢失了,如图可能是两种原因:

(1)、缺少设置,需要在初始化phpwod类之后加上一行代码

$phpWord->getSettings()->setUpdateFields(true);

(2)、因为windows系统的安全策略,所以下载下来的word文档都被锁定了,导致部分样式无法生效,可以右击选择文档属性,查看下是否被锁定(如图)。选择解除锁定后,便可以解决问题。

但是我们下载文件不可能一个个去把文件解锁后使用,那么可以从windows系统层面取消这个安全设置,具体方法可以百度。也可以将文件生成压缩包后再下载下来,解压后的word就是正常的

2、表格展示不全,具体原因及解决方案:

/weixin_42629862/article/details/17235?spm=1001..3001.5502

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。