Я пытаюсь создать таблицу слов с объединенной ячейкой, используя php 7.4 и PHPWorld 0.17.0 (последняя версия доступна).
Это то, чего я хочу достичь:
----------------
| |
----------------
| | | | | |
----------------
Это мой код:
// New Word Document
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
$table = $section->addTable(array('width' => 100 * 100, 'unit' => 'pct', 'align' => 'center'));
$row = $table->addRow();
$cell = $row->addCell(null, array('gridSpan'=>5));
$cell->addText(htmlspecialchars("full row"));
// row 1
$row = $table->addRow();
$cell = $row->addCell();
$cell->addText(htmlspecialchars("1"));
$cell = $row->addCell();
$cell->addText(htmlspecialchars("2"));
$cell = $row->addCell();
$cell->addText(htmlspecialchars("3"));
$cell = $row->addCell();
$cell->addText(htmlspecialchars("4"));
$cell = $row->addCell();
$cell->addText(htmlspecialchars("5"));
/*
// row 2
$row = $table->addRow();
$cell = $row->addCell(null, array('gridSpan'=>1));
$cell->addText(htmlspecialchars("1"));
$cell = $row->addCell(null, array('gridSpan'=>1));
$cell->addText(htmlspecialchars("2"));
$cell = $row->addCell(null, array('gridSpan'=>1));
$cell->addText(htmlspecialchars("3"));
$cell = $row->addCell(null, array('gridSpan'=>2));
$cell->addText(htmlspecialchars("4"));
// row 3
$row = $table->addRow();
$cell = $row->addCell(null, array('gridSpan'=>1));
$cell->addText(htmlspecialchars("1"));
$cell = $row->addCell(null, array('gridSpan'=>4));
$cell->addText(htmlspecialchars("2"));
*/
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="text.docx"');
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");
exit();
В результате docx не показывает никакой таблицы, только текст !! Ошибка не отображается и не записывается в php файл журнала ошибок!
Если вы попытаетесь прокомментировать раздел «row1» и раздел раскомментирования, создающий «row2» и «row3», он будет работать как положено!
РЕДАКТИРОВАТЬ : Я нашел решение. Добавьте ширину ко всем ячейкам (например, 1), чтобы решить проблему! Ширина измеряется в два раза, кажется, значения ширины используются для расчета пропорций между ячейками. Таким образом, одинаковые значения ширины означают, что каждая ячейка имеет одинаковую ширину.