OpenTBS - excel模板中动态行数,列生成策略(用于图表数据)

时间:2017-05-08 00:03:17

标签: php excel opentbs

我正在使用OpenTBS生成动态数量的行和列,以生成m x n矩阵。我需要指定非静态行数和数据源列。

如何在模板中生成动态数量的列和行(m x n)以供OpenTBS用作图表的数据源?

这是否可行,是否存在变通方法,或者这是否需要OpenTBS以外的其他工具?

更新 - 嵌入式Excel模板

+-----------------+------------------------------------------+
|                 |  [c.key;block=td;parallel=tbs:table]     |
+-----------------+------------------------------------------+
|  [r.$;block=tr] |  [r.[c.val;block=td]]                    |
+-----------------+------------------------------------------+

PHP代码

// -----------------
// Output the result
// -----------------
$nbr_row = 5;
$nbr_col = 5;
// List of column's names
$columns = array();
for ($col=1; $col <= $nbr_col; $col++)
{
    $columns[$col]=  $col;
}





$data = array();
for ($row=0; $row<=$nbr_row; $row++)
{
    $record = array();
    if ($row == 0)
    {
        for ($col=1; $col <= $nbr_col; $col++)
        {
            $record[$columns[$col]] = $col;
        }
    }
    for ($col=1; $col <= $nbr_col; $col++)
    {
        $record[$columns[$col]] = 1;
    }
    $data[$row] = $record;
}

// Expanding columns
$TBS->MergeBlock('c',$columns);

// Merging rows
$TBS->MergeBlock('r',$data);
$TBS->Show();

1 个答案:

答案 0 :(得分:0)

使用OpenTBS,动态行数非常简单。对于XLSX模板,您只需在使用block=tbs:row定义的块上使用MergeBlock()。

XLSX更难管理动态列数。这很困难但并非不可能。 您可以使用合并列的技术,然后使用行HTML table。 但是这个技术假设您在合并列和行之前知道电子表格中的实际行数(我的意思是在内部XML中)。 这是一个难点,因为当您使用Ms Excel编辑XLSX模板时,您并不真正看到内部XML中保存的实际列和行是什么。 幸运的是,您可以使用快捷键[Ctrl] [End],它将选择当前工作表中的最后一个实际单元格。

如何将合并后的结果用于图表是另一个值得另一个Stackoverflow问题的问题,因为它取决于您尝试做什么。