我需要根据相邻单元格调整背景单元格颜色。
我的模板是一个 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>
重点是:
- 我有分配了 wfill='D9D9D9' 属性的 aw:shd 标签
- 我在模板中有一个 [title.bg;att=w:shd#w:fill] 条目,旨在将合并块 title.bg 路由到 wfill 属性。
- 我有一个合并条目 [title.quoteFOB] 旨在将合并字段 title.quoteFOB 路由到单元格内容。
执行合并的调用如下所示:
$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 与预期的一样。所有合并都发生了,并且 w:fill 值在修改后的 XML 中被正确替换。但是当我打电话
$TBS->Show(OPENTBS_DOWNLOAD, "$fileName.docx") and
$TBS->Show(OPENTBS_STRING);
输出 docx 文件不包含 -w:fill 更改。它之前和之后的一切,但没有改变。现在我又开始认为我是个白痴,我做错了什么。
任何想法我做错了什么?,请帮助我。