【发布时间】:2013-09-24 23:39:35
【问题描述】:
我在 docx 文件中使用了一个包含以下行的表格:
[b.num;block=w:tr]
[b.name]
在 PHP 中,我使用 $TBS->MergeBlock('b', $data_1); 来添加 $data_1 数组中的内容。
问题是,如何动态控制每一行中的文本颜色,例如如果名字是“John”,那么用红色标记,否则用蓝色?
【问题讨论】:
我在 docx 文件中使用了一个包含以下行的表格:
[b.num;block=w:tr]
[b.name]
在 PHP 中,我使用 $TBS->MergeBlock('b', $data_1); 来添加 $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']
【讨论】: