@@ -385,9 +385,8 @@ protected function readTable(XMLReader $xmlReader, DOMElement $domNode, $parent,
385
385
} elseif ('w:tc ' == $ rowNode ->nodeName ) { // Cell
386
386
$ cellWidth = $ xmlReader ->getAttribute ('w:w ' , $ rowNode , 'w:tcPr/w:tcW ' );
387
387
$ cellStyle = null ;
388
- $ cellStyleNode = $ xmlReader ->getElement ('w:tcPr ' , $ rowNode );
389
- if (null !== $ cellStyleNode ) {
390
- $ cellStyle = $ this ->readCellStyle ($ xmlReader , $ cellStyleNode );
388
+ if ($ xmlReader ->elementExists ('w:tcPr ' , $ rowNode )) {
389
+ $ cellStyle = $ this ->readCellStyle ($ xmlReader , $ rowNode );
391
390
}
392
391
393
392
$ cell = $ row ->addCell ($ cellWidth , $ cellStyle );
@@ -573,7 +572,7 @@ private function readTableIndent(XMLReader $xmlReader, DOMElement $domNode)
573
572
/**
574
573
* Read w:tcPr.
575
574
*
576
- * @return array
575
+ * @return null| array
577
576
*/
578
577
private function readCellStyle (XMLReader $ xmlReader , DOMElement $ domNode )
579
578
{
@@ -585,8 +584,30 @@ private function readCellStyle(XMLReader $xmlReader, DOMElement $domNode)
585
584
'bgColor ' => [self ::READ_VALUE , 'w:shd ' , 'w:fill ' ],
586
585
'noWrap ' => [self ::READ_VALUE , 'w:noWrap ' , null , null , true ],
587
586
];
587
+ $ style = null ;
588
588
589
- return $ this ->readStyleDefs ($ xmlReader , $ domNode , $ styleDefs );
589
+ if ($ xmlReader ->elementExists ('w:tcPr ' , $ domNode )) {
590
+ $ styleNode = $ xmlReader ->getElement ('w:tcPr ' , $ domNode );
591
+
592
+ $ margins = ['top ' , 'left ' , 'bottom ' , 'right ' ];
593
+ foreach ($ margins as $ side ) {
594
+ $ ucfSide = ucfirst ($ side );
595
+ $ styleDefs ['cellMargin ' . $ ucfSide ] = [self ::READ_VALUE , 'w:tcMar/w: ' . $ side , 'w:w ' ];
596
+ }
597
+
598
+ $ borders = array_merge ($ margins , ['insideH ' , 'insideV ' ]);
599
+ foreach ($ borders as $ side ) {
600
+ $ ucfSide = ucfirst ($ side );
601
+
602
+ $ styleDefs ['border ' . $ ucfSide . 'Size ' ] = [self ::READ_VALUE , 'w:tcBorders/w: ' . $ side , 'w:sz ' ];
603
+ $ styleDefs ['border ' . $ ucfSide . 'Color ' ] = [self ::READ_VALUE , 'w:tcBorders/w: ' . $ side , 'w:color ' ];
604
+ $ styleDefs ['border ' . $ ucfSide . 'Style ' ] = [self ::READ_VALUE , 'w:tcBorders/w: ' . $ side , 'w:val ' ];
605
+ }
606
+
607
+ $ style = $ this ->readStyleDefs ($ xmlReader , $ styleNode , $ styleDefs );
608
+ }
609
+
610
+ return $ style ;
590
611
}
591
612
592
613
/**
0 commit comments