2017-05-08 101 views
0

我正在使用OpenTBS生成用于生成m x n矩阵的动态行数和列数。我需要指定一个非静态的行数和数据源的列。OpenTBS - 在Excel模板中用于动态行数,列生成的策略(用于图表数据)

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

这是可能的,是否有解决方法,或这是否需要一些其他工具而不是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(); 
+0

根据文档,“参数”parallel = tbs:table“不适用于Ms Excel和Ms Powerpoint文档。 » – Skrol29

+0

我最近在下面的问题中修改了我的表格。请参阅https://stackoverflow.com/q/44874672/1691103希望我仍然可以实现我的目标,即在嵌入式Excel模板文件中生成动态行,列。 – Vahe

回答

0

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

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

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

+0

请参阅编辑,如何获取模板以便为每个PHP代码在单元格中呈现值? – Vahe

+0

TBS网站上的例子有一个错误,因为它使用'parallel = tbs:table',而它应该是这个参数的替代品。请再次访问该示例并使用新示例。另请注意,您使用的是XLSX模板,而不是HTML,因此请使用'tbs:cell'和'tbs:row',而不是'td'和'tr'。 http://www.tinybutstrong.com/examples.php?e=dyncol0&m=result – Skrol29

相关问题