释放双眼,带上耳机,听听看~!

最近做的一个招聘的项目含有word导出功能 遇到的一些坑在这里总结一下

首先要引入资源包

composer require phpoffice/phpword

引入之后在自己的要写导出方法的文件头引用

use PhpOffice\PhpWord\TemplateProcessor;

然后准备一个模板word文件

记住是.docx格式的,.doc格式的容易出现读取不了文件的现象

我准备的文件如下

文档中需要替换的变量用${变量名}来表示

循环块要用${tag}开始用${/tag}结束

写出的最后效果如下

然后就是php代码部分了

/**

* 简历导出

*

* @param [type] $ids

* @return void

*/

public function export($ids)

{

//找到模板文件的位置

$path = __DIR__.'/resume.docx';

// 实例化

$templateProcessor = new TemplateProcessor($path);

//数据获取

$data = $this->model->get($ids);

$worklist = Db::name('work_history')->where('user_id',$ids)->select();

$worknum = Db::name('work_history')->where('user_id',$ids)->count();

$edulist = Db::name('edu_history')->where('user_id',$ids)->select();

$edunum = Db::name('edu_history')->where('user_id',$ids)->count();

//基础信息填写替换

$templateProcessor->setValue('name', $data['nickname']);

$templateProcessor->setValue('age', $data['age']);

$templateProcessor->setValue('email', $data['email']);

$templateProcessor->setValue('mobile', $data['mobile']);

$templateProcessor->setValue('gender', $data['gender_text']);

$templateProcessor->setValue('address', $data['address']);

$templateProcessor->setValue('native_place', $data['native_place']);

$templateProcessor->setValue('emc', $data['emc']);

$templateProcessor->setValue('emc_mobile', $data['emc_mobile']);

$templateProcessor->setValue('bio', $data['bio']);

//工作经历

$templateProcessor->cloneBlock('WORKBLOCK',$worknum,true,true);

// $templateProcessor->cloneRow('post_content',$worknum);

foreach ($worklist as $key => $item) {

$key +=1;

$templateProcessor->setValue('times#'.$key, $item['join_time']);

$templateProcessor->setValue('com_name#'.$key, $item['work_units']);

$templateProcessor->setValue('job#'.$key, $item['job']);

$templateProcessor->setValue('post_content#'.$key, $item['post_content']);

}

//教育经历

$templateProcessor->cloneRow('school_name',$edunum);

foreach ($edulist as $key => $item) {

$key +=1;

$templateProcessor->setValue('school_name#'.$key, $item['school_name']);

$templateProcessor->setValue('school_type#'.$key, $item['eductional_systme']);

$templateProcessor->setValue('major#'.$key, $item['major']);

$templateProcessor->setValue('join_time#'.$key, $item['times']);

}

$templateProcessor->saveAs('./uploads/resume/'.$data['nickname'].'.docx');

// halt($_SERVER);

$this->redirect('http://'.$_SERVER['HTTP_HOST'].'/uploads/resume/'.$data['nickname'].'.docx');

}

这里再提一下官方的文档中关于块克隆的案例是非常简单的demo

就是这样的 克隆一个 段落就完事儿了????

没办法 我只能去看源码 看能不能找到一些蛛丝马迹

我开始一直用cloneBlock传的参数和cloneRow一样 就是只传 变量名和重复次数 后来才发现原来才发现有个indexVariables的参数

这个参数的作用就是 设置为true的时候就可以跟cloneRow一样 生成变量的索引

有了这个就能生成最后的成果

51job简历导出php,PHPWord 导出简历经验小结相关推荐

  1. 大厂程序员教你如何写简历(附简历模板)//简历、秋招、简历模板。经验分享、资源分享

    最近朋友圈很多大佬都已经转发公司的招聘信息了,一年一度的秋招又来了. "如果你是应届的同学,请务必参加秋招",这对应届生来说是真的很重要! 而面试不单单是考察你的技术能力,简历也是 ...

  2. 51JOB:根据HR处理简历的一般流程,简历投递后会有如下几种状态出现

    根据HR处理简历的一般流程,简历投递后会有如下几种状态出现: 已到达: 你的简历已经成功投递到了HR那里 已查收: HR已查收了你的简历 已查阅: HR已仔细查看了你的简历详细内容,还需与其他人的简历 ...

  3. 阿里8年测试老鸟教你软件测试工程师简历,技术栈,项目经验怎么写

    [文章末尾给大家留下了大量的福利] 工作久了发现,在互联网这个圈子里,软件测试工程师和产品经理是两个"水分"较大的岗位,在招人的时候如果不擦亮眼睛,稍有不慎就可能会踩雷.前不久面试 ...

  4. PHPword 导出word设置不同样式

    ** PHPword 导出word设置不同样式 ** 1.先看需求样子: 2.先用composer下载phpword到你的项目中,如果不会可以到网上搜,教程很多: 3. 引入,然后设置下全局字体字号, ...

  5. 研究生复试简历模板及考研·面试·范文·经验

    研究生复试简历模板及考研·面试·范文·经验 马上要复试了 肯定还是要做简历的,但不用花太多精力放在简历的制作上.对于本科不是很好的学生也不用自卑,毕竟受环境限制.所以复试最重要的是好好准备,提高硬实力 ...

  6. 面试IT公司的时候,Java程序员的简历应该写多少个项目经验比较合适?

    往期精选 ●  架构师高并发高性能分布式教程(4000G) ●  39阶段精品云计算大数据实战视频教程 ●  互联网技术干货视频教程大全[菜单为准] ●  2017年8月最新Intellij IDEA ...

  7. 面试-简历:爆网上投简历的真正内幕及技巧!你看过绝对有收获!

    http://www.mianwww.com/html/2011/12/12526.html这2周,公司大规模招聘,我基本就干一件事情,看简历.一天300-500封封.早中晚各看一次. 找工作很难吗? ...

  8. php简历github,怎么将个人简历部署在github上?

    怎么将个人简历部署在github上? 面试的时候如果没带简历,或者简历刚好投完了,就特别尴尬,并且可能错失一次求职的机会.所以在网络端部署一个网页版的简历就比较重要了. 环境配置 这里所用到的是免费的 ...

  9. 如何将pdf导出html,如何导出PDF版、导出EXE版、导出HTML离线版?

    云瑶电刊平台,支持在线导出PDF.EXE.HTML: 一.点击编辑器右上角发布按钮: 二.点击高级设置,即可看到导出PDF.导出EXE.导出HTML: 三.导出成功后,即可跳转到下载页面,点击下载对应 ...

最新文章

  1. 斯坦福大学报告称中国AI论文引用率首超美国!但李国杰院士也发文灵魂拷问!...
  2. 2018年科技公司融资纪录十大排行榜!中国四家公司上榜
  3. 工作五年,后面四年重复着第一年的活儿?
  4. Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
  5. 实现div里的img图片水平垂直居中
  6. 机器学习应用量化投资没啥用?那是你方法不对!
  7. PCL编程笔记——Assertion `px != 0' failed.
  8. java刷票小程序,小程序投票系统刷票
  9. 常见的预测模型及算法
  10. 教你:找回已失效的B站视频+批量下载B站收藏夹视频
  11. java版本PID放大/eTerm放大软件介绍
  12. 摄影构图学pdf_简单易懂,摄影小白也能Get的摄影技巧!
  13. 基于SpringBoot-上传照片保存到本地,且回显照片
  14. 计算机网络技术主要课程阐述,计算机网络技术专业实训课程体系研究
  15. win服务器物理内存占用高,win10系统长时间使用物理内存过高的解决方法
  16. 不知道视频画面大小裁剪怎么操作?1分钟教你学会裁剪大小
  17. 网络爬虫(网络蜘蛛,网络机器人)与Web安全
  18. miui系统分身测试软件,【MIUI 8评测】手机分身初上手,黑科技值爆表!
  19. 传说中的“睡眠算法”的输出分析
  20. ansys mechanical 仿真步长设置 仿真时间

热门文章

  1. maya包裹表情变形_MAYA做表情时常用的混全变形器的相关介绍
  2. 华为设备配置Smart Link主备备份
  3. JavaScript 有关获取当前/上个月/12个月前/七/7天/一周之前/下周一的日期格式 持续更新...
  4. Python 练习实例100例—6
  5. lucene原理及java实现
  6. macu盘格式化linux系统盘,Mac上制作Linux U盘启动盘
  7. php-sdk 安装,PHP SDK怎么安装
  8. 金税 TC718K 驱动
  9. 使用vtwinfx插件时fcpx意外退出_10个提高 uTools 使用效率的小技巧
  10. MATLAB中的矩阵乘法与实际矩阵乘法的差异