0

目前,我正在使用以下内容替换 docx 文件中的邮件合并字段。这会将邮件合并字段等替换«Address_1»«Address_2»数据库中的值,并将其输出为新的文档文件。

我目前遇到的问题是,如果数据库中的值是空的,邮件合并字段将被替换为空白值,这反过来又使空白行保持在原位,从而在我的输出文件中产生如下内容: 在此处输入图像描述

private function __parseFile($thefile)
    {
        $this->_multicount++;
        $content = file_get_contents($thefile); ///this is document.xml extracted from the docx file
        foreach ($this->searchlist as $placeholder => $val) {
            if($val=='' || empty($val)){
                $content = str_replace('«'.$placeholder.'»', '', $content); ;
            }else{
                $content = str_replace('«'.$placeholder.'»', htmlspecialchars($val), $content);   
            }
            
        }
        $newfile = $thefile.'.new'.($this->_multicount);
        $fh = fopen($newfile, 'wb');
        fwrite($fh, $content);
        fclose($fh);
    }

可以做什么,有没有更好的方法可以在数据库中的值为空时删除合并字段以消除输出文档文件中的空白行/段落。

4

1 回答 1

0

这是您可以通过使用字段规则在 Word 中轻松解决的问题。您将所有这些都放在一行中并定义规则。

如果该字段不为空,则打印换行符。

于 2020-09-15T15:55:20.113 回答