【问题标题】:OpenTBS: How to dynamically change color of rows in a tableOpenTBS:如何动态更改表中行的颜色
【发布时间】:2013-09-24 23:39:35
【问题描述】:

我在 docx 文件中使用了一个包含以下行的表格:

[b.num;block=w:tr]
[b.name]

在 PHP 中,我使用 $TBS->MergeBlock('b', $data_1); 来添加 $data_1 数组中的内容。

问题是,如何动态控制每一行中的文本颜色,例如如果名字是“John”,那么用红色标记,否则用蓝色?

【问题讨论】:

    标签: php colors docx opentbs


    【解决方案1】:

    我可以提出两种解决方案。

    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']
    

    【讨论】:

    • 尝试使用第一种方法,但不起作用。 (红色)和(蓝色)标签是否应该按照您指定的方式编写,或者文本必须以这些颜色标记,而不使用标签?感谢您的信息!
    • 文本必须用那些颜色标记。但是您也可以留下文本进行测试。在第一个解决方案中,它们是块中的两个部分。 TBS 将选择其中一个部分进行展示。
    猜你喜欢
    • 1970-01-01
    • 2017-03-09
    • 2014-06-26
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多