当前位置: 首页 > news >正文

PHP 基于模板动态生成 Word 文档:图片 + 表格数据填充全方案(PHPOffice 实战)

在企业级应用中,经常需要根据模板批量生成标准化 Word 文档(如合同、报表、证明等),且需支持文本替换、表格动态生成、图片插入等功能。本文基于 PHPOffice/PHPWord 库,通过封装工具函数 writeDocxByTemplate,实现「模板驱动 + 动态数据填充」的 Word 生成方案,适用于各类业务场景。

一、技术栈与核心依赖

核心库: PHPOffice/PHPWord(PHP 处理 Word 文档的主流库,支持模板替换、图片插入、表格操作等)
功能目标:

  • 文本内容批量替换
  • 动态生成表格(支持多行数据克隆)
  • 图片插入(支持模板占位符替换)
  • 兼容 .docx 格式模板

二、环境准备:安装 PHPWord

首先通过 Composer 安装 PHPOffice/PHPWord:

composer require phpoffice/phpword

注意:PHP 版本需 ≥ 7.1,且确保 php_zip、php_xml 等扩展已启用(处理 Word 文档依赖)。

三、核心实现:通用 Word 生成函数

封装 writeDocxByTemplate 函数,实现「文本 + 表格 + 图片」的一站式填充。函数逻辑如下:

1. 函数完整代码

/*** 根据 Word 模板生成文档(支持文本、表格、图片填充)* @param string $fileName 生成的文件名(含路径,如 'output.docx')* @param string $template 模板路径(如 'template.docx')* @param array $datas 填充数据(格式:['占位符' => '替换值' 或 数组/图片路径])* @return string 生成的文件路径*/
function writeDocxByTemplate($fileName, $template, $datas)
{// 初始化模板处理器$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($template);foreach ($datas as $key => $value) {// 处理图片(键名以 'img' 开头,如 'imgLogo' 对应模板中的 ${Logo})if (substr($key, 0, 3) === 'img') {$placeholder = substr($key, 3); // 提取占位符(如 'Logo')if (!empty($value)) {// 插入图片(调用自定义图片处理函数)setWordImageValue($templateProcessor, $placeholder, $value);} else {// 图片为空时,用空格替换占位符(避免残留 ${xxx})$templateProcessor->setValue($placeholder, ' ');}} // 处理数组(通常为表格数据,需要克隆行)elseif (is_array(
http://www.lryc.cn/news/583511.html

相关文章:

  • 爬虫-数据解析
  • 20-C#构造函数--虚方法
  • 机器视觉之工业相机讲解
  • 【leetcode100】下一个排列
  • 题解:P13017 [GESP202506 七级] 线图
  • RAC-CELL(小区)处理
  • 射频前端的革新力量:ATR2057超低噪声放大器深度解析
  • C#基础篇(10)集合类之列表
  • AMIS全栈低代码开发
  • Claude Code 开发使用技巧
  • 一天一道Sql题(day05)
  • 双立柱式带锯床cad【1张总图】+设计说明书+绛重
  • MS32C001-C单片机,32位ARM M0+内核,宽电压、低功耗、小封装。
  • Python PyDub详解:音频处理从未如此简单
  • 高效集成-C#全能打印报表设计器诞生记
  • Paimon 原子提交实现
  • 无人机雷达模块运行与技术解析
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | ROM、RAM、FIFO 的使用
  • UI前端与数字孪生结合实践探索:智慧物流的仓储优化与管理系统
  • 缓存三大问题详解与工业级解决方案
  • 分类预测 | Matlab基于KPCA-ISSA-SVM和ISSA-SVM和SSA-SVM和SVM多模型分类预测对比
  • 【算法训练营Day10】栈与队列part2
  • 微算法科技从量子比特到多级系统,Qudits技术革新引领量子计算新时代
  • 三码合一:OneCode注解驱动的新时代编码范式
  • C++学习笔记三
  • 类模板的语法
  • Python标准库:时间与随机数全解析
  • 【面试精讲】I2C 子系统核心结构与常见问题深度解析
  • MySQL 09 普通索引和唯一索引
  • 汽车功能安全-软件单元验证 (Software Unit Verification)【用例导出方法、输出物】8