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

Generate table with OpenTBS - each row in separate cell

我尝试创建一个包含 table 的 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
----------------------------------------`

等等,等等…… 我不知道如何构建数组以及如何为其创建模板。如果有人有类似的解决方案并且可以提供帮助,我将不胜感激。

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

要合并 table 中的不同单元格,您可以使用选项 serial 合并块。 参见 example and doc

要合并单元格中的项目,您可以使用子块。最简单的是«自动子块»。 参见 example and doc

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

$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 字段放置在其自己的段落中。你也可以使用嵌套的table,那么你必须指定block=tbs:row.