From ebe61b7ecc674730413e538371827caeee14aede Mon Sep 17 00:00:00 2001 From: alexgann Date: Wed, 20 Mar 2013 16:29:37 -0300 Subject: [PATCH 1/2] Fix merged-cell borders --- Classes/PHPExcel/Writer/HTML.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Classes/PHPExcel/Writer/HTML.php b/Classes/PHPExcel/Writer/HTML.php index a30033f1d..13e44a708 100644 --- a/Classes/PHPExcel/Writer/HTML.php +++ b/Classes/PHPExcel/Writer/HTML.php @@ -965,8 +965,9 @@ private function _createCSSStyleBorders(PHPExcel_Style_Borders $pStyle) { * @return string */ private function _createCSSStyleBorder(PHPExcel_Style_Border $pStyle) { - // Create CSS - $css = $this->_mapBorderStyle($pStyle->getBorderStyle()) . ' #' . $pStyle->getColor()->getRGB(); + // Create CSS - add !important to non-none border styles for merged cells + $borderStyle = $this->_mapBorderStyle($pStyle->getBorderStyle()); + $css = $borderStyle . ' #' . $pStyle->getColor()->getRGB() . ($borderStyle=='none'?'':' !important'); // Return return $css; @@ -1229,6 +1230,16 @@ private function _generateRow(PHPExcel_Worksheet $pSheet, $pValues = null, $pRow $spans = $this->_isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]; $rowSpan = $spans['rowspan']; $colSpan = $spans['colspan']; + //Also apply style from last cell in merge to fix borders - relies on !important for non-none border declarations in _createCSSStyleBorder + if($colSpan>1) { + $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum+$colSpan-1) . ($pRow + 1); + $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); + } + + if($rowSpan>1) { + $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum) . ($pRow + $rowSpan); + $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); + } } // Write From 2f39c81503d145628d9de9b4ede415f7aa228b37 Mon Sep 17 00:00:00 2001 From: alexgann Date: Wed, 20 Mar 2013 16:41:52 -0300 Subject: [PATCH 2/2] removed unnecessary ifs --- Classes/PHPExcel/Writer/HTML.php | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Classes/PHPExcel/Writer/HTML.php b/Classes/PHPExcel/Writer/HTML.php index 13e44a708..ba9dca0b2 100644 --- a/Classes/PHPExcel/Writer/HTML.php +++ b/Classes/PHPExcel/Writer/HTML.php @@ -1231,15 +1231,8 @@ private function _generateRow(PHPExcel_Worksheet $pSheet, $pValues = null, $pRow $rowSpan = $spans['rowspan']; $colSpan = $spans['colspan']; //Also apply style from last cell in merge to fix borders - relies on !important for non-none border declarations in _createCSSStyleBorder - if($colSpan>1) { - $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum+$colSpan-1) . ($pRow + 1); - $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); - } - - if($rowSpan>1) { - $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum) . ($pRow + $rowSpan); - $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); - } + $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum + $colSpan - 1) . ($pRow + $rowSpan); + $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); } // Write