у меня есть рабочий пример кода, где в phpword создаётся новый файл с таблицей Код (Text): 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"); я решил его интегрировать в другой код, где в существующий файл подставляются значения. по моей задумке вместо одного из значений должна подставиться созданная таблица. Код (Text): 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.
думаю как-то так... PHP: $document = new \PhpOffice\PhpWord\TemplateProcessor($_SERVER['DOCUMENT_ROOT'] . '/development_mr/word_table/template.docx'); //$phpWord = new \PhpOffice\PhpWord\PhpWord(); - нафига предыдущий открывали, чтоб потом создавать новый пустой? $section = $document ->addSection();// добавляем секцию к открытому документу принцип ясен... что вся работа должна идти с одним документом... ну и формирование таблицы - именно в нем