OpenTBS - 在Excel模板中用于动态行数,列生成的策略(用于图表数据)
问题描述:
我正在使用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();
答
行的动态数量是非常简单,OpenTBS。对于XLSX模板,您只需在使用block=tbs:row
定义的块上使用MergeBlock()。
XLSX更难以管理动态列数。这很困难但并非不可能。 对于HTML table,您可以使用合并列和行的技术。 但是,这项技术假设您知道合并列和行之前电子表格中的实际行数(我的意思是在内部XML中)。 这就是难点,因为当您使用Ms Excel编辑XLSX模板时,您不会真正看到保存在内部XML中的实际列和行是什么。 幸运的是,您可以使用快捷键[Ctrl] [End],它将选择当前工作表中的最后一个实际单元格。
如何将合并结果用于图表是值得另一个Stackoverflow问题的另一点,因为它取决于您想要做什么。
根据文档,“参数”parallel = tbs:table“不适用于Ms Excel和Ms Powerpoint文档。 » – Skrol29
我最近在下面的问题中修改了我的表格。请参阅https://stackoverflow.com/q/44874672/1691103希望我仍然可以实现我的目标,即在嵌入式Excel模板文件中生成动态行,列。 – Vahe