OpenTBS - стратегия для динамического числа строк, генерации столбцов в шаблоне Excel (используется для данных диаграммы)
Я использую 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 ответ
Динамический номер строки очень прост с OpenTBS. Для шаблона XLSX вам просто нужно использовать MergeBlock() для блока, определенного с помощью block=tbs:row
,
Динамическое количество столбцов сложнее управлять для XLSX. Это сложно, но не невозможно. Вы можете использовать технику слияния столбцов, а затем строк, как для таблицы HTML. Но этот технический прием предполагает, что вы знаете фактическое количество строк (я имею в виду внутренний XML) в электронной таблице, прежде чем объединять столбцы и строки. И это трудный момент, потому что, когда вы редактируете шаблон XLSX в Ms Excel, вы на самом деле не видите, какие фактические столбцы и строки сохраняются во внутреннем XML. К счастью, вы можете использовать ярлык [Ctrl][End], который выберет последнюю фактическую ячейку в текущем листе.
Как использовать объединенный результат в диаграмме - это еще один момент, который заслуживает другого вопроса Stackru, потому что это зависит от того, что вы пытаетесь сделать.