使用OpenTBS生成表 - 每行在单独的单元格中

时间:2017-10-26 20:06:58

标签: opentbs tinybutstrong

我尝试用里面的表创建一个ODT文件(或docx)。我阅读并搜索所有SO和支持论坛,但不知道如何制作这样的东西:

cell1.val1  |  cell2.val1  |  cell3.val1
cell1.val2  |  cell2.val2  |  cell3.val2
cell1.val3  |  cell2.val3  |  cell3.val3
------------|--------------|------------
cell4.val1  |  cell5.val1  |  cell6.val1
cell4.val2  |  cell5.val2  |  cell6.val2
cell4.val3  |  cell5.val3  |  cell6.val3
----------------------------------------`

依此类推...... 我不知道如何构建数组以及如何为它创建模板。如果有人有类似的解决方案并且可以提供帮助,我将非常感激。

1 个答案:

答案 0 :(得分:1)

您的表中有两个合并:合并表中的不同单元格并合并单元格中的项目。

要合并表格中的不同单元格,您可以合并带有选项serial的块。 请参阅exampledoc

要合并单元格中的项目,可以使用子块。最简单的是“自动子块”。 请参阅exampledoc

因此,如果您的数据结构如下:

$data = array(
   array(
    'cell_id' => 1,
    'items' => array(
        array('value' => 1),
        array('value' => 2),
        array('value' => 3),
        // ...
    ),
   ),
   array(
    'cell_id' => 2,
    'items' => array(
        array('value' => 1),
        // ...
    ),
   ),
   ...
);

那么你的模板可以是这样的:

-------------------------------------------------------------------------------------------------------------------------------
| Column 1                                | Column 2                                | Column 3                                |
-------------------------------------------------------------------------------------------------------------------------------
| [b;block=tbs:row;serial]                |                                         |                                         |
| [b_1.cell_id;block=tbs:cell;sub1=items] | [b_2.cell_id;block=tbs:cell;sub1=items] | [b_3.cell_id;block=tbs:cell;sub1=items] |
| [b_1_sub1.value;block=tbs:p]            | [b_2_sub1.value;block=tbs:p]            | [b_3_sub1.value;block=tbs:p]            |
-------------------------------------------------------------------------------------------------------------------------------

在此示例中,单元格中的项目合并在段落(block=tbs:p)上,假设TBS字段位于其自己的段落中。您也可以使用嵌套表,然后必须指定block=tbs:row