Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2022, 11:41   #1
Dripper
 
Регистрация: 16.03.2022
Сообщений: 8
По умолчанию как в phpword вставить в шаблон не простой текст, а целую таблицу, созданную в том же phpword?

у меня есть рабочий пример кода, где в 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.
Dripper вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт данных из DBGrid в Word в созданную таблицу. manula БД в Delphi 7 22.03.2016 18:54
Из excel скопировать в word файле таблицу и вставить в текст письма в outlook ac1-caesar Microsoft Office Excel 1 06.01.2016 13:44
Как добавить новое поле в уже созданную таблицу средствами делфи sdr1 БД в Delphi 2 26.12.2014 11:50
есть простой шаблон для JOOMLA NIKOMIRON WordPress и другие CMS 3 09.11.2008 21:34
Передача данных из Excel в созданную таблицу Самоучка БД в Delphi 2 06.11.2008 20:53