我在 docx 文件中使用具有以下行的表:
[b.num;block=w:tr]
[b.name]
在 PHP 中,我使用$TBS->MergeBlock('b', $data_1);
which 从$data_1
数组中添加内容。
问题是,如何动态控制每行中的文本颜色,例如,如果名称是“John”,则将其标记为红色,否则使用蓝色?
我可以提出两种解决方案。
1)使用条件部分
为此,为每种可能性使用一行:
[b.num;block=w:tr;when '[b.name]'='John'] (red) [b.name]
[b.num;block=w:tr;default] (blue) [b.name]
2)使用参数“att”更改颜色
在该行的单元格中,当您将颜色应用于文本的部分 d 时,内部 XML 是这样的:
<w:p>
<w:r>
<w:rPr>
<w:color w:val="FF0000"/>
</w:rPr>
<w:t>this text is red</w:t>
</w:r>
</w:p>
因此,您可以通过在模板中应用应用任何颜色来准备单元格,然后使用带有参数“att”的字段来转换颜色的值。
[b.num;block=w:tr]
[b.name]
[b.name;att=w:color#w:val;if [val]='John';then 'FF0000';else '548DD4']