欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHPWord添加文本到指定位置

程序员文章站 2022-06-10 18:09:49
...

想导出word文档,将文本添加到文档的指定位置,比如前一段话的后面,而前一段话是循环生成的,该段后面又有循环生成的另一段话,而我想加入的文本不能放在循环里,只能在两次循环输出文本之后添加,这样的话我怎么才能把文本输出到紧接着的第一个循环之后?
例如:

PHPWord添加文本到指定位置

我想将答案放在问题的后面,而问题和选项都是循环生成的,怎么才能实现将其放在“处分”的后面??
求大神赐教

部分代码:

foreach ($ques['answer'] as $key => $an) {
            $textrun1 = $section->createTextRun('rStyle');
                            if (is_array($an['synopsis'])) {
                                $textrun1->addText($this->aZ[$key] . ".", 'rStyle');
                                foreach ($an['synopsis'] as $i) {
                                    if (isset($i['type']) && $i['type'] == "text") {
                                        $textrun1->addText($i['value'], 'rStyle');
                                    }
                                    if (isset($i['type']) && $i['type'] == "img" && file_exists($img = ROOT_DIR . str_replace(ROOT_URL, '', $i['value']))) {
                                        $imageStyle = array(
                                            'width' => $i['width'] == 0 ? 350 : $i['width'],
                                            'height' => $i['height'] == 0 ? 350 : $i['height']
                                            // 'align' => 'center',
                                        );
                                        $textrun1->addImage($img, $imageStyle);
                                    }
                                }
                                unset($textrun1);
                            } else {
                                $section->addText(strtoupper($this->aZ[$key]) . "." . $an['synopsis'], 'rStyle');
                            }
                            if ($an['value']) {
                                $answer[] = $this->aZ[$key];
                            }
                            $section->addTextBreak();
                        }
                        //判断是否输出答案
                        if($withAnswer==1){
                            $section->addText("(" . implode($answer, ",") . ")", 'rStyle');
                            $section->addTextBreak();
                            $answer = array();
                        }

回复内容:

想导出word文档,将文本添加到文档的指定位置,比如前一段话的后面,而前一段话是循环生成的,该段后面又有循环生成的另一段话,而我想加入的文本不能放在循环里,只能在两次循环输出文本之后添加,这样的话我怎么才能把文本输出到紧接着的第一个循环之后?
例如:

PHPWord添加文本到指定位置

我想将答案放在问题的后面,而问题和选项都是循环生成的,怎么才能实现将其放在“处分”的后面??
求大神赐教

部分代码:

foreach ($ques['answer'] as $key => $an) {
            $textrun1 = $section->createTextRun('rStyle');
                            if (is_array($an['synopsis'])) {
                                $textrun1->addText($this->aZ[$key] . ".", 'rStyle');
                                foreach ($an['synopsis'] as $i) {
                                    if (isset($i['type']) && $i['type'] == "text") {
                                        $textrun1->addText($i['value'], 'rStyle');
                                    }
                                    if (isset($i['type']) && $i['type'] == "img" && file_exists($img = ROOT_DIR . str_replace(ROOT_URL, '', $i['value']))) {
                                        $imageStyle = array(
                                            'width' => $i['width'] == 0 ? 350 : $i['width'],
                                            'height' => $i['height'] == 0 ? 350 : $i['height']
                                            // 'align' => 'center',
                                        );
                                        $textrun1->addImage($img, $imageStyle);
                                    }
                                }
                                unset($textrun1);
                            } else {
                                $section->addText(strtoupper($this->aZ[$key]) . "." . $an['synopsis'], 'rStyle');
                            }
                            if ($an['value']) {
                                $answer[] = $this->aZ[$key];
                            }
                            $section->addTextBreak();
                        }
                        //判断是否输出答案
                        if($withAnswer==1){
                            $section->addText("(" . implode($answer, ",") . ")", 'rStyle');
                            $section->addTextBreak();
                            $answer = array();
                        }

已解决,采用TextRun,将想要连接在一起的文本用同一个textrun对象表示出来。

相关标签: php