Dear phpdocx support team,
I am currently using WordFragment and addFormElement with addTable to generate a Word document with a table. The table consists of 250 rows, and each row contains 5 cells. In the first two cells, I add text, and in the remaining three, I add checkboxes by addFormElement. After this, I add another row with two cells, the first one being empty and the second one containing a text field by addFormElement.
Here is a simplified version of my code:
$docx = new CreateDocx(); for ($i = 1; $i <= 250; $i++) { for ($j = 1; $j <= 5; $j++) { $item = new WordFragment($docx); if ($j >= 3) { $item->addFormElement('checkbox'); } else { $item->addText($i); } $cell = ['value' => $item, 'border' => 'nil', 'cellMargin' => ['left' => 0, 'right' => 0]]; $row[] = $cell; } $table[] = $row; unset($row); for ($j = 1; $j <= 2; $j++) { $itemRemark = new CRWordFragment($docx); $cell = []; if ($j == 2) { $itemRemark->addFormElement('textfield'); } else { $itemRemark->addText(''); } $cell = ['value' => $itemRemark, 'border' => 'nil', 'cellMargin' => ['left' => 50, 'right' => 50]]; $rowRemark[] = $cell; } $table[] = $rowRemark; unset($rowRemark); } $options = ['columnWidths' => [950, 8300, 250, 250, 250], 'cantSplitRows' => true, 'tableLayout' => 'fixed', 'tableAlign' => 'center', 'tableWidth' => ['type' => 'twips', 'value' => 10000]]; $docx->addTable($table, $options); $docx->createDocx("text.docx");
The issue I am facing is that this operation takes around 10 seconds to complete and the output file is only 70KB, which is a bit too long for my use case. I was wondering if there is any way to optimize this process or if there are any best practices that I could follow to improve the performance.
Thank you for your help.