PHP 生成 Word 工具 MDword 1.1.2 正式发布,支持多级列表
MDword 是PHP生成word的另一工具。
更新日志(用法详见案例)
- 支持多级列表(支持段落式样赋值)
- 优化目录跳转
- 已知bug修复
项目介绍
主要用途:动态生成word
优势:生成word只需关注动态数据及逻辑,无需关注式样的调整(式样可以借助office word调整母版即可)
与PHPWord的爱恨情仇
-
共同点
- PHP编写的库(资源包)
- 用于生成office word
-
不同点
- PHPWord 专注于一个元素一个元素的写入,而MDword则是专注于在母版的基础上修改,功能更强大,编码效率更高
- 修改文字式样,增加封面,修改页眉页脚MDword只需用word编辑软件调整母版,而PHPWord需要繁琐的去调整每个元素
- 可以自动生成目录
教程
-
安装
//方法一 composer require mkdreams/mdword //方法二,手动引入自动加载类 require_once('Autoloader.php');
-
给母版“temple.docx”添加批注
-
调用方法(更多更丰富的调用方式,参考案例:tests\samples\simple for readme,例如:目录、序号等)
//新建类 加载 母版 $TemplateProcessor = new WordProcessor(); $template = 'temple.docx'; $TemplateProcessor->load($template); //赋值 $TemplateProcessor->setValue('value', 'r-value'); //克隆并复制 $TemplateProcessor->clones('people', 3); $TemplateProcessor->setValue('name#0', 'colin0'); $TemplateProcessor->setValue('name#1', [ ['text'=>'colin1','style'=>'style','type'=>MDWORD_TEXT], ['text'=>1,'type'=>MDWORD_BREAK], ['text'=>'86','style'=>'style','type'=>MDWORD_TEXT] ]); $TemplateProcessor->setValue('name#2', 'colin2'); $TemplateProcessor->setValue('sex#1', 'woman'); $TemplateProcessor->setValue('age#0', '280'); $TemplateProcessor->setValue('age#1', '281'); $TemplateProcessor->setValue('age#2', '282'); //图片复制 $TemplateProcessor->setImageValue('image', dirname(__FILE__).'/logo.jpg'); //删除某行 $TemplateProcessor->deleteP('style'); //保存 $rtemplate = __DIR__.'/r-temple.docx'; $TemplateProcessor->saveAs($rtemplate);
-
结果
-
动图
性能情况(统计脚本)
| 测试项 | 用时(S) |
|---|---|
| 1页母版赋值100次 | 0.04 |
| 1页母版赋值500次 | 0.16 |
| 1页母版赋值1000次 | 0.33 |
| 1页母版赋值10000次 | 7.80 |
| 1750页母版赋值100次 | 4.61 |
| 1750页母版赋值500次 | 4.94 |
| 1750页母版赋值1000次 | 5.43 |
| 1750页母版赋值10000次 | 17.39 |
内存使用情况(统计脚本)
| 连续运行第几次 | 累积内存使用情况 | 备注 |
|---|---|---|
| 1 | 0.050590515136719 M | 首次需要加载PHP类 |
| 2 | 0.050949096679688 M | |
| 3 | 0.050949096679688 M | |
| 4 | 0.050949096679688 M | |
| 5 | 0.050949096679688 M | |
| 6 | 0.050949096679688 M | |
| 7 | 0.050949096679688 M | |
| 8 | 0.050949096679688 M |


