Php openTbs标记未更新

Php openTbs标记未更新,php,ms-word,opentbs,Php,Ms Word,Opentbs,我需要根据相邻单元格调整背景单元格颜色 我的模板是word文档,我将单元格颜色设置为某种随机颜色,因此我感兴趣的xml如下所示: <w:tc> <w:tcPr> <w:tcW w:w="5400" w:type="dxa"/> <w:tcBorders> <w:left w:val="single" w:sz="4" w:space="0" w:color="D9D9D9" w:themeColor="back

我需要根据相邻单元格调整背景单元格颜色

我的模板是word文档,我将单元格颜色设置为某种随机颜色,因此我感兴趣的xml如下所示:

<w:tc>
  <w:tcPr>
    <w:tcW w:w="5400" w:type="dxa"/>
    <w:tcBorders>
      <w:left w:val="single" w:sz="4" w:space="0" w:color="D9D9D9" w:themeColor="background1" w:themeShade="D9"/>
    </w:tcBorders>
    <w:shd w:val="clear" w:color="auto" w:fill="D9D9D9" w:themeFill="background1" w:themeFillShade="D9"/>
  </w:tcPr>
  <w:pPr><w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr></w:pPr>
  <w:r>
  <w:rPr>
     <w:sz w:val="20"/><w:szCs w:val="20"/>
   </w:rPr>
   <w:t>[title.bg;att=w:shd#w:fill][title.quoteFOB]</w:t>
  </w:r>
$TBS->MergeField('title', array('custName' => $custName, 
    'compName' => $compName, 'custAddress1' => $custAddr1, 
    'custAddress2' => $custAddr2, 'quoteNum' => $quoteNum, 
    'quoteRev' => $quoteRev, 'quoteForm' => $quoteForm, 
    'quoteExpDate' => $quoteExp, quoteTerms' => $quoteTerm, 
    'quoteFOB' => $quoteFob, bg'=>'00FF00'));
这是包含多个单元格更新的多个合并块中的一个,所有这些更新似乎都按预期工作。除了细胞颜色外,其他一切都会改变

我尝试了许多可能导致问题的方法,比如:禁用除一个合并之外的所有合并,重新排列字段顺序,以及读取多个stackoverflow条目。这些都不管用

我以为我是个白痴,我可以通过查看代码来了解这一点。并通过代码进行跟踪。我发现在Show()调用之前,TBS->Source与预期一样。所有合并都发生了,并且在修改后的XML中正确替换了w:fill值。但是当我打电话的时候

$TBS->Show(OPENTBS_DOWNLOAD, "$fileName.docx") and
$TBS->Show(OPENTBS_STRING);
输出docx文件不包含-w:fill更改。它之前和之后的一切,但不是改变。现在我又开始认为我是个白痴,我做错了什么


知道我做错了什么吗?请帮帮我。

仅仅用“[title.bg;att=w:shd#w:fill]”更改-w:fill属性是不够的。似乎只要-w:themeFill=“background1”存在,MS Word就会忽略此属性。当我添加“[title.tf;att=w:shd#w:themeFill]以将themeFill属性更改为空字符串时,一切都按预期进行


我感到尴尬的是,我花了多长时间才退一步,第二次/第三次查看输出XML。我希望这能帮助其他人避免像我一样浪费时间

我不能复制你的错误。我测试了PHP和XML,所有内容都正确地合并了。对于每个加载的模板,只能执行一个Show()。但我想这不是只有一个字段没有合并的原因。您是否有其他“att”参数?针对哪个属性目标?你能发送一段代码来重现这个错误吗?