как в phpword вставить в шаблон не простой текст, а целую таблицу, созданную в том же phpword?

bicyclist

Новичок
у меня есть рабочий пример кода, где в phpword создаётся новый файл с таблицей
Код:
require_once("vendor/autoload.php");
 
/* Start to develop here. Best regards https://php-download.com/ */
 
// Creating the new document...
$phpWord = new \PhpOffice\PhpWord\PhpWord();
 
 
// Adding an empty Section to the document...
$section = $phpWord->addSection();
 
// своя таблица
 
$fancyTableStyle = array('borderColor' => 'gray', 'borderSize' => 1, 'cellMargin' => 80,'cellSpacing'=>1); // стили для таблицы
$fancyTableFontStyle = array('size' => 10, 'bold' => true); // стили для заголовка таблицы (thead)
$myFontStyle = array('size' => 8, 'bold' => false, 'italic' => true); // стили для заголовка таблицы (thead)
$fancyTableStyleItalicRight = array('align' => 'right'); // стили для выполнено/не выполнено
 
$myTable = $section->addTable($fancyTableStyle);
// шапка
$myTable->addRow();
$myTable->addCell(1500, ['valign' => 'center'])->addText("Дата, время", $fancyTableFontStyle);
$myTable->addCell(7000, ['valign' => 'center'])->addText("Содержание сообщений в течение смены, подписи о сдаче и приемке смены смены", $fancyTableFontStyle);
$myTable->addCell(1500, ['valign' => 'center'])->addText("Визы, замечания", $fancyTableFontStyle);
 
// инфа
 
$myTableCellStyle = array('valign' => 'top'); // стили для всех ячеек таблицы
$curDate = ''; // дата/время по дефолту пустые
 
$myTable->addRow();
$myTable->addCell(1500, $myTableCellStyle)->addText("", $myFontStyle);
$myTable->addCell(7000, $myTableCellStyle)->addText("За время дежурства АО и ТН не было", $myFontStyle);
$myTable->addCell(1500, $myTableCellStyle)->addText("", $myFontStyle);
 
$footer = $section->addFooter();
$footer->addPreserveText('{PAGE} из {NUMPAGES}', null, array('align' => 'right'));
 
$file = 'Журнал от '.date('d.m.Y').'.docx';
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $file . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$xmlWriter->save("php://output");
я решил его интегрировать в другой код, где в существующий файл подставляются значения. по моей задумке вместо одного из значений должна подставиться созданная таблица.
Код:
require_once($_SERVER['DOCUMENT_ROOT'] . '/phpword/vendor/autoload.php');
 
$document = new \PhpOffice\PhpWord\TemplateProcessor($_SERVER['DOCUMENT_ROOT'] . '/development_mr/word_table/template.docx');
 
$phpWord = new \PhpOffice\PhpWord\PhpWord();
 
$section = $phpWord->addSection();
 
$fancyTableStyle = array('borderColor' => 'gray', 'borderSize' => 1, 'cellMargin' => 80,'cellSpacing'=>1); // стили для таблицы
$fancyTableFontStyle = array('size' => 10, 'bold' => true); // стили для заголовка таблицы (thead)
$myFontStyle = array('size' => 8, 'bold' => false, 'italic' => true); // стили для заголовка таблицы (thead)
$fancyTableStyleItalicRight = array('align' => 'right'); // стили для выполнено/не выполнено
 
$myTable = $section->addTable($fancyTableStyle);
// шапка
$myTable->addRow();
$myTable->addCell(1500, ['valign' => 'center'])->addText("Дата, время", $fancyTableFontStyle);
$myTable->addCell(7000, ['valign' => 'center'])->addText("Содержание сообщений в течение смены, подписи о сдаче и приемке смены смены", $fancyTableFontStyle);
$myTable->addCell(1500, ['valign' => 'center'])->addText("Визы, замечания", $fancyTableFontStyle);
 
// инфа
 
$myTableCellStyle = array('valign' => 'top'); // стили для всех ячеек таблицы
$curDate = ''; // дата/время по дефолту пустые
 
$myTable->addRow();
$myTable->addCell(1500, $myTableCellStyle)->addText("", $myFontStyle);
$myTable->addCell(7000, $myTableCellStyle)->addText("За время дежурства АО и ТН не было", $myFontStyle);
$myTable->addCell(1500, $myTableCellStyle)->addText("", $myFontStyle);
 
$arResultDocOutfit = [];
$arResultDocOutfit['table'] = $section;
$arResultDocOutfit['company'] = $companyName;
$arResultDocOutfit['gendir'] = $companyGenDir;
 
$document->setValues($arResultDocOutfit);
$document->saveAs($_SERVER['DOCUMENT_ROOT'] . '/upload/outfitBlank/contract_.docx');
 
header('Location: /upload/outfitBlank/contract_.docx');
и ничего не подставляется. Как сделать правильно? Как альтернатива подойдёт способ таблицу в формате html перевести в подходящий формат и вставить в шаблон word.
 

ksnk

прохожий
Чтобы в шаблон вставить значения, нужно хотя бы понимать как работать с тем шаблонизатором. Прочитать документацию, понять некоторые слова. https://phpword.readthedocs.io/en/latest/templates-processing.html
в примере функции setComplexBlock даже есть пример как вставить таблицу.
Более разумно было бы создать в шаблоне таблицу и просто клонировать в ней строки.
 
Сверху