使用PHPWord读取docx文件时如何获取FORMCHECKBOX表单元素的取值
原因说明
你通过getText()拿到的{FORMCHECKBOX}、{FORMTEXT}只是Word表单控件的占位标记,控件的实际值(勾选状态、文本内容)不会在文本内容里返回,需要单独识别表单域元素后调用对应方法获取。
解决代码
<?php require_once 'PHPWord/bootstrap.php'; $phpWord = \PhpOffice\PhpWord\IOFactory::createReader('Word2007')->load('helloWorld.docx'); foreach($phpWord->getSections() as $section) { foreach($section->getElements() as $element) { // 匹配表单域类型元素 if ($element instanceof \PhpOffice\PhpWord\Element\FormField) { $fieldType = $element->getType(); // 拿表单控件的自定义名称,创建docx时设置过才会有值 $fieldName = $element->getName() ?? '未命名控件'; if ($fieldType === 'FORMCHECKBOX') { // 获取复选框勾选状态,返回布尔值 $checkedStatus = $element->isChecked() ? '已勾选' : '未勾选'; echo "复选框【{$fieldName}】状态:{$checkedStatus}\n"; } elseif ($fieldType === 'FORMTEXT') { // 获取文本输入框的实际填写内容 $textContent = $element->getValue(); echo "文本框【{$fieldName}】内容:{$textContent}\n"; } } } }
注意事项
- 如果你生成docx的时候没有给表单控件设置name属性,
getName()会返回空,你可以根据遍历顺序对应不同的控件 isChecked()方法需要PHPWord版本 >= 0.13.0,版本过低的话先升级库即可使用
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

