将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="http://www.w3.org/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标签、样式的支持不够全面,有些样式可能会失效
代码:

<?php
namespace 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, 'Word2007');$objWriter->save($word_name);return $word_name ;}
}

使用phpword过程中也遇到一些问题,在这里记录下解决过程
1、生成的目录后面的页码丢失了,如图可能是两种原因:
(1)、缺少设置,需要在初始化phpwod类之后加上一行代码

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

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

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

2、表格展示不全,具体原因及解决方案:
https://blog.csdn.net/weixin_42629862/article/details/120137235?spm=1001.2014.3001.5502

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

  1. 通过navicat工具导出word编写数据库设计文档

    备注:只能一个一个表的导出. 1.数据库设计文档格式要求 打开数据库,执行如下查询语句 SELECT COLUMN_NAME 代码, COLUMN_COMMENT 名称, COLUMN_TYPE 数据 ...

  2. 关于python:如何将Word文档批量转换为PDF文档

    Q:         我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了.但是WPS需要收 ...

  3. 将word文档转换为html文档,将Word文档转换为HTML文档的工具—GT—HTML

    差翠啭颦 删 将Word 0| ) / 文格转损为j『了 张 翅 张春明' 几年前,若要访问lntexnet上的信息.皿J『只能采用命夸行 :弑 进行操作.这对于大多敲非计算机专业人员来说,纷繁复 杂 ...

  4. c# html文件转换word,C#实现word转换成html文档 源码

    [实例简介]C#实现word转换成html文档 [实例截图] [核心代码] using System; using System.Collections.Generic; using System.C ...

  5. 用什么方法可以将Word转换成PDF文档?

    我们有时编辑完Word文件需要打印或发送给他人查看,一般会先转换为PDF格式,这样在别的电脑上打开时就不会出现格式的变动,也不会出现因为版本而无法打开的问题,那么用什么方法可以将Word转换成PDF文 ...

  6. 轻松完成word格式的接口文档

    今天在开发完一个项目的接口之后,公司领导过来说:"需要一份word格式的接口文档,***本门主任需要看这些文档,记得接口文档做的好看一点".然后领导拍拍我的肩膀转身就走了,身为一个 ...

  7. word主控文档计算机二级,2017高会《职称计算机》Word 2003:主控文档和子文档

    2017年高级会计师 考试评审依然有部分地区需要考生通过职称计算机的考试,东奥小编为大家整理高级会计职称计算机知识点,希望能够帮助大家轻松过关! 主控文档和子文档 如果要编辑的文档长达数百页,最好使用 ...

  8. java docx文档解析_带有docx4j的Java Word(.docx)文档

    java docx文档解析 几个月前,我需要创建一个包含许多表和段落的动态Word文档. 过去,我曾使用POI来实现此目的,但是我发现它很难使用,并且在创建更复杂的文档时对我来说效果不佳. 因此,对于 ...

  9. 如何在Word 2013中向文档添加水印

    A watermark is a faded, background image that displays behind the text in a document. It can be used ...

  10. Win7/Win8.1升级Win10后Word/Excel/PPT 2013文档打不开的解决方法

    从Win7/Win8.1升级安装Win10后,有一个好处就是以前系统的设置和安装的软件都可以保留下来.但是很快有用户发现了一个明显的兼容性问题,就是Office 2013创建的文档(包括Word.Ex ...

最新文章

  1. Database Vault注冊
  2. HashSet源码分析 jdk1.6
  3. Android自动化打包工具,利用Jenkins实现Android自动化打包
  4. 通过saltapi接口安装实例(modules)
  5. UIView属性clipsTobounds的应用
  6. Java面试面经大合集(含答案),大厂越来越简单进了,建议收藏
  7. android手机如何截屏快捷键,手机截屏怎么弄,手把手教你手机截图方法
  8. 计算机硬盘更换图解,GHOST磁盘克隆详细图文教程,看后你也可以自己快速更换电脑硬盘...
  9. 随想录:开发一流Android SDK
  10. 7-15(查找) 航空公司VIP客户查询(25 分)
  11. 中式装修之美,呈现出东方的诗意与唯美
  12. stl库的使用——队列queue和优先队列和优先队列小根堆(全家桶哎)
  13. ORB-SLAM2代码详解09: 闭环线程LoopClosing
  14. python错误:TypeError: Cannot interpret ‘3‘ as a data type
  15. 字节跳动音乐梅开二度,腾讯音乐、网易云要警惕了
  16. GLES2.0中文API-glCopyTexImage2D
  17. firefox Chrome浏览器redux devTools调试工具
  18. [《考驾照》闲笔记事集]2012年8月28日
  19. 模拟鼠标移动程序实现——解决域控制器策略强制电脑锁屏问题
  20. 2021最新打赏源码-窈窕淑女,君子好求。2021最新视频打赏项目

热门文章

  1. ElasticSearch中must和filter的区别
  2. 用微信小程序开店之二——Hello 小程序
  3. 安卓天气预报mysql_android天气预报app源码(包运行)
  4. 员工福利平台:让员工福利更加“鲸彩FUN粽”
  5. 2022-2028年中国汽车车身电子控制系统行业发展战略规划及投资机会预测报告
  6. 百度二面和京东二面+三面面经
  7. [高通SDM450][Android9.0]屏蔽开放WIFi以及WIFI信号有个x导致无法上网
  8. 冰点免费下载百度文库等资料
  9. because there was insufficient free space available after evicting expired cache entries - consider
  10. 最简单的PDF在线转换PPT的方法