背景

上一篇:MHT导出word文档

上一篇,已经记录了使用MHT来生成并导出word文档的方法,这次,来记录一下使用php的扩展phpword来生成并导出word;

使用步骤

gitlab上composer phpword扩展
phpword样式使用文档

  • 命令:composer require phpoffice/phpword
    

一、使用方法1(html文件生成word文档)

但是文档上示例使用并不完全,因为我要导出的word是个简历,有图片,有表格的,所以我想能不能跟MHT一样,先渲染一个html页面,然后导出,还真的有,哈哈哈哈

<?phpnamespace App\Services;use App\Models\Adresume;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\Html;
use PhpOffice\PhpWord\TemplateProcessor;class WordService
{public function __construct(){}public static function downResumeWord($medlive_id,$title='',$updated_at=''){info('export');list($oResume,$oIntension,$oWorkexp,$oEduexp,$oAttach) = Adresume::ViewResume($medlive_id);$oUser = Adresume::where('medlive_id',$medlive_id)->first();$filename = $oUser->truename?$oUser->truename."的简历":"简历";header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');header('Content-Disposition: attachment;filename="' . $filename . '.docx"');header('Cache-Control: max-age=0');$phpWord = new PhpWord();$section = $phpWord->addSection();$domain = config('app.url');$html = view('pc.usercenter.resume_doc',compact('domain','oResume','oIntension','oWorkexp','oEduexp','oAttach','title','updated_at'))->render();Html::addHtml($section, $html,false,false);$writer = IOFactory::createWriter($phpWord,'Word2007' );$writer->save('php://output');}
}

这里是直接下载下来的,若是你需要保存到服务器的话,如下示例:

<?phpnamespace App\Services;use App\Models\Adresume;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\Html;
use PhpOffice\PhpWord\TemplateProcessor;class WordService
{public function __construct(){}public static function downResumeWord($medlive_id,$title='',$updated_at=''){info('export');list($oResume,$oIntension,$oWorkexp,$oEduexp,$oAttach) = Adresume::ViewResume($medlive_id);$oUser = Adresume::where('medlive_id',$medlive_id)->first();$filename = $oUser->truename?$oUser->truename."的简历":"简历";$phpWord = new PhpWord();$section = $phpWord->addSection();$domain = config('app.url');$html = view('pc.usercenter.resume_doc',compact('domain','oResume','oIntension','oWorkexp','oEduexp','oAttach','title','updated_at'))->render();Html::addHtml($section, $html,false,false);$writer = IOFactory::createWriter($phpWord,'Word2007' );$writer->save($filename.'docx');}
}

二、使用方法2(使用word模板生成word文档)

不过,该方法并未尝试过,仅供参考哈,给大家找到了一篇细节描述的文章分享
前人栽树,后人乘凉1:word模板生成word文档

二、使用方法3(使用phpword属性,自己搭建样式)

<?phpnamespace App\Services;use App\Models\Adresume;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\Html;
use PhpOffice\PhpWord\TemplateProcessor;//require_once 'bootstrap.php';
//require  './vender/autoload.php';class WordService
{public function __construct(){}public static function downResumeWord($medlive_id,$title='',$updated_at=''){info('export');list($oResume,$oIntension,$oWorkexp,$oEduexp,$oAttach) = Adresume::ViewResume($medlive_id);$oUser = Adresume::where('medlive_id',$medlive_id)->first();$filename = $oUser->truename?$oUser->truename."的简历":"简历";$phpWord = new PhpWord();/* 方法二:自己一行一行处理样式,可以兼容图片 */$fontStyle2 = array('align'=>'center');  //整体样式$section = $phpWord->addSection();      //整体页面$phpWord->addTitleStyle(1, ['bold' => true, 'color' => '000', 'size' => 17, 'name' => '宋体'],$fontStyle2);    //设置title样式$time = date('Y-m-d',time());$section->addText("应聘:$title投递时间:$updated_at");  //添加文本$styleTable = ['name' => '微软雅黑','borderSize' => 6,'cellMargin' => 20,]; //设置表格样式$phpWord->addTableStyle('myTable', $styleTable);$table = $section->addTable('myTable');//第一行$table->addRow(500);$table->addCell(5000)->addImage(public_path().$oResume->downthumb, ['gridSpan' => 4,'width'=>350, 'height'=>100, 'valign'=>'center', 'align'=>'center']);//第二行$table->addRow(500);$table->addCell(5000)->addText($oResume->truename,['size'=>24,'color'=>'1f6990'], ['gridSpan' => 4,'valign'=>'center', 'align'=>'center']);//第三行$table->addRow(500);$table->addCell(5000)->addText('>基本信息',['size'=>18,'color'=>'black','bold'=>true], ['gridSpan' => 4,'valign'=>'top', 'align'=>'left']);//第四行$table->addRow(500);$table->addCell(5000)->addImage(public_path().'/assets/images/ad/review_line.png', ['gridSpan' => 4,'width'=>540, 'valign'=>'top', 'align'=>'center']);$writer = IOFactory::createWriter($phpWord,'Word2007' );$fileName = $filename.'.doc';$writer->save( $fileName);//如果只是保存到服务器的话到这里就好了
//        $file = public_path().'/uploadfile/export/'.date('Ymd').'/'  . $fileName;
//        return response()->download($file); //这里将文件下载下来}}

导出结果如下:

看这,我就累啦,这才一点简历的头部,我就写了那么多代码了,心好累呀,还是直接渲染html页面来的舒服呀

PHP导出word方法(一phpword)相关推荐

  1. PHP导出word方法(一mht)

    相关文章: phpword生成word文档,phpword的使用 背景 项目中有需要自定义样式,导出用户的简历的功能,简历嘛,最好是导出word或者pdf的,最后选择了导出成word 调研 导出wor ...

  2. 微信识别图片文字直接导出Word方法

    这时候很多朋友会问手机怎么才能识别图片文字呢?谁说不能!其实手机微信就可以做到这一点!下面为大家分享一个简单易操作方法,只需要对准纸质文档即可一键识别,并导出Word文档,帮你轻松扫描这几张纸质文档! ...

  3. php完美导出word,PHP使用phpword生成word文档

    使用phpword生成文档有两种方式直接使用代码编写word文档,用代码生成word,但是设置样式,格式,图片非常麻烦,不建议使用.如果客户或产品提供一份word的样式,我们也难以完全复原,调样式很头 ...

  4. 前端react,vue导出word的几种方法(可以导出图片)

    方法一:mhtml-to-word导出word 方法一详情请看这里 1.安装环境 npm install mhtml-to-word 2.引入使用 import { exportWord } from ...

  5. easypoi导出word表格_java如何导出word和wps文档

    使用场景:打开一个表单页面,导出word或wps文件,代码框架基于springboot+jpa 一.准备word模板 二.pom.xml文件中引入依赖 <dependency><gr ...

  6. vue 导出word带图片

    下载依赖 包 npm install docxtemplater npm install pizzip npm install jszip npm install jszip-utils npm in ...

  7. vue 导出word文档(包括图片)

    vue 导出word文档(包括图片) 1.打开终端,安装依赖 -- 安装 docxtemplater npm install docxtemplater pizzip --save-- 安装 jszi ...

  8. java 导出wps_java如何导出word和wps文档

    使用场景:打开一个表单页面,导出word或wps文件,代码框架基于springboot+jpa 一.准备word模板 二.pom.xml文件中引入依赖 cn.afterturn easypoi-bas ...

  9. SpringBoot整合Freemarker导出word文档表格

    freemarker模板里面的template.process()方法里传入的第一个参数Object类型,如果是一个实体类对象在模板上怎么进行渲染,将实体类的值取出 freemarker会调用Obje ...

最新文章

  1. linux 中 timeval结构体 - Neddy11 - 博客园
  2. ELK 处理 Spring Boot 日志,有点强悍!
  3. 解决python2和python3的pip冲突
  4. 《程序员面试金典》合法括号判断
  5. Managed keyedState中的ValueStateDescriptor与MapStateDescriptor
  6. [NOIP2001] 提高组 洛谷P1024 一元三次方程求解
  7. python word模板 图_科学网—Python绘制可插入Word的高清矢量图(SVG转EMF) - 任晓东的博文...
  8. 徐汉彬:亿级Web系统搭建—单机到分布式集群
  9. 对话框:创建对话框模板和修改对话框属性
  10. ubuntu创建wifi热点(android可识别)亲测可用
  11. 使用 matlab 数字图像处理(六)—— 空域滤波
  12. 牛皮!竟然有大佬基于 Spring Boot + Vue 开发了一套网易云QQ音乐(附源码)。。。...
  13. java画地图热力图_高德地图+热力图+AJAX(SSM)
  14. python破解excel进入密码(指定密码字符)
  15. fastDB核心心得
  16. 系统逻辑架构图怎么画
  17. Symbol的基本使用
  18. Centos 上使用mmsh协议听猫扑网络电台 VLC播放器
  19. 一个孩子的心愿(大冰,感动)
  20. centos7上先要关闭httpd服务之后再卸载,反正卸载之后就是安装不上一脸懵逼

热门文章

  1. python3做出倒计时效果
  2. LTE入门篇-6:MIMO多天线技术
  3. Redis这篇文章一键搞定
  4. css+div布局----典型布局基本框架
  5. baocms伪静态_baocms
  6. 《中华人民共和国著作权法》全文(2021.6.1起施行)
  7. 关闭内核printk打印
  8. 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口)
  9. 如何锁定MATLAB 图片大小,哪位亲知道怎么把图片做成固定大小啊比如200*230什么的这种? 爱问知识人...
  10. 实践--天气预报应用实例