Table in phpword

0

Could you show me how I can compile the following table with the phpword library? I have dealt with the examples that it brings but I could not?

Awaiting your help, thank you very much.

This is my code

$fancyTableStyle = array('borderSize' => 6, 'borderColor' => '999999');
$cellRowSpan = array('vMerge' => 'restart', 'valign' => 'center', 'bgColor' => 'FFFF00');
$cellRowContinue = array('vMerge' => 'continue');
$cellVCentered = array('valign' => 'center');
$cellHCentered = array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER);

$cellColSpan = array('gridSpan' => 1, 'valign' => 'center');
$cellColSpan2 = array('gridSpan' => 2, 'valign' => 'center');

$table = $section->addTable('styleTable', $fancyTableStyle);

$table->addRow();
$cell1 = $table->addCell(2000, array('vMerge'=> 'restart'));
$textrun1 = $cell1->addTextRun();
$textrun1->addText('A');

$cell2 = $table->addCell(4500, array('gridSpan'=>2));
$textrun2 = $cell2->addTextRun($cellHCentered);
$textrun2->addText('B');

$table->addCell(null, $cellRowSpan);
$table->addCell(2000,$cellColSpan)->addText('C', null);

$table->addRow();
$table->addCell(null, $cellRowContinue);
$table->addCell(1500, $cellVCentered)->addText('B1', null, $cellHCentered);
$table->addCell(1500, $cellVCentered)->addText('B2', null, $cellHCentered);
$table->addCell(1500, $cellVCentered)->addText('B3', null, $cellHCentered);
$table->addCell(null, $cellRowContinue);

$table->addCell(2000, $cellVCentered)->addText('C1', null, $cellHCentered);

and what it shows me is the following

    
asked by Yoedusvany Hdez 10.05.2018 в 15:59
source

1 answer

0

You can do it in the following way by using vMerge and gridSpan :

/*
 *  -----------------------------------------------
 *  |     |              |    |    D    |    E    |
 *  |  A  |      B       |  C |---------|---------|
 *  |     |              |    | D1 | D2 | E1 | E2 |
 *  |     |--------------|----|----|----|----|----|
 *  |     | B1 | B2 | B3 | C1 | Da | Db | Ea | Eb |
 *  -----------------------------------------------
 */
$section->addPageBreak();
$section->addText('Table with colspan and rowspan', $header);
$styleTable = array('borderSize' => 6, 'borderColor' => '999999');
$phpWord->addTableStyle('Colspan Rowspan', $styleTable);
$table = $section->addTable('Colspan Rowspan');

$row = $table->addRow();
$row->addCell(1000, array('vMerge' => 'restart'))->addText('A');
$row->addCell(1000, array('gridSpan' => 3, 'vMerge' => 'restart'))->addText('B');
$row->addCell(1000, array('gridSpan' => 1, 'vMerge' => 'restart'))->addText('C');
$row->addCell(1000, array('gridSpan' => 2, 'vMerge' => 'restart'))->addText('D');
$row->addCell(1000, array('gridSpan' => 2, 'vMerge' => 'restart'))->addText('E');

$row = $table->addRow();
$row->addCell(1000, array('vMerge' => 'continue'));
$row->addCell(1000, array('vMerge' => 'continue', 'gridSpan' => 3));
$row->addCell(1000, array('vMerge' => 'continue', 'gridSpan' => 1));
$row->addCell(1000)->addText('D1');
$row->addCell(1000)->addText('D2');
$row->addCell(1000)->addText('E1');
$row->addCell(1000)->addText('E2');

$row = $table->addRow();
$row->addCell(1000, array('vMerge' => 'continue'));
$row->addCell(1000)->addText('B1');
$row->addCell(1000)->addText('B2');
$row->addCell(1000)->addText('B3');
$row->addCell(1000)->addText('C1');
$row->addCell(1000)->addText('Da');
$row->addCell(1000)->addText('Db');
$row->addCell(1000)->addText('Ea');
$row->addCell(1000)->addText('Eb');

With that you get to show exactly what you need.

    
answered by 11.05.2018 в 23:39