Chained operations on cell ranges involving borders are now possible
Fixes #428 Fixes #578
This commit is contained in:
parent
eb31899225
commit
b05d07a365
|
@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
- Cell formats with escaped spaces were causing incorrect date formatting - [#557](https://github.com/PHPOffice/PhpSpreadsheet/issues/557)
|
- Cell formats with escaped spaces were causing incorrect date formatting - [#557](https://github.com/PHPOffice/PhpSpreadsheet/issues/557)
|
||||||
- Could not open CSV file containing HTML fragment - [#564](https://github.com/PHPOffice/PhpSpreadsheet/issues/564)
|
- Could not open CSV file containing HTML fragment - [#564](https://github.com/PHPOffice/PhpSpreadsheet/issues/564)
|
||||||
- Exclude the vendor folder in migration - [#481](https://github.com/PHPOffice/PhpSpreadsheet/issues/481)
|
- Exclude the vendor folder in migration - [#481](https://github.com/PHPOffice/PhpSpreadsheet/issues/481)
|
||||||
|
- Chained operations on cell ranges involving borders operated on last cell only [#428](https://github.com/PHPOffice/PhpSpreadsheet/issues/428)
|
||||||
|
|
||||||
## [1.3.1] - 2018-06-12
|
## [1.3.1] - 2018-06-12
|
||||||
|
|
||||||
|
|
|
@ -333,6 +333,9 @@ class Style extends Supervisor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// restore initial cell selection range
|
||||||
|
$this->getActiveSheet()->getStyle($pRange);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\Color;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class BorderRangeTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testBorderRangeInAction()
|
||||||
|
{
|
||||||
|
// testcase for the initial bug problem: setting border+color fails
|
||||||
|
// set red borders aroundlA1:B3 square. Verify that the borders set are actually correct
|
||||||
|
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$sheet = $spreadsheet->getActiveSheet();
|
||||||
|
|
||||||
|
$argb = 'FFFF0000';
|
||||||
|
$color = new Color($argb);
|
||||||
|
|
||||||
|
$sheet->getStyle('A1:C1')->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN)->setColor($color);
|
||||||
|
$sheet->getStyle('A1:A3')->getBorders()->getLeft()->setBorderStyle(Border::BORDER_THIN)->setColor($color);
|
||||||
|
$sheet->getStyle('C1:C3')->getBorders()->getRight()->setBorderStyle(Border::BORDER_THIN)->setColor($color);
|
||||||
|
$sheet->getStyle('A3:C3')->getBorders()->getBottom()->setBorderStyle(Border::BORDER_THIN)->setColor($color);
|
||||||
|
|
||||||
|
// upper row
|
||||||
|
$expectations = [
|
||||||
|
// cell => Left/Right/Top/Bottom
|
||||||
|
'A1' => 'LT',
|
||||||
|
'B1' => 'T',
|
||||||
|
'C1' => 'RT',
|
||||||
|
'A2' => 'L',
|
||||||
|
'B2' => '',
|
||||||
|
'C2' => 'R',
|
||||||
|
'A3' => 'LB',
|
||||||
|
'B3' => 'B',
|
||||||
|
'C3' => 'RB',
|
||||||
|
];
|
||||||
|
$sides = [
|
||||||
|
'L' => 'Left',
|
||||||
|
'R' => 'Right',
|
||||||
|
'T' => 'Top',
|
||||||
|
'B' => 'Bottom',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($expectations as $cell => $borders) {
|
||||||
|
$bs = $sheet->getStyle($cell)->getBorders();
|
||||||
|
foreach ($sides as $sidekey => $side) {
|
||||||
|
$assertion = "setBorderStyle on a range of cells, $cell $side";
|
||||||
|
$func = "get$side";
|
||||||
|
$b = $bs->$func(); // boo
|
||||||
|
|
||||||
|
if (strpos($borders, $sidekey) === false) {
|
||||||
|
self::assertSame(Border::BORDER_NONE, $b->getBorderStyle(), $assertion);
|
||||||
|
} else {
|
||||||
|
self::assertSame(Border::BORDER_THIN, $b->getBorderStyle(), $assertion);
|
||||||
|
self::assertSame($argb, $b->getColor()->getARGB(), $assertion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testBorderRangeDirectly()
|
||||||
|
{
|
||||||
|
// testcase for the underlying problem directly
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$sheet = $spreadsheet->getActiveSheet();
|
||||||
|
$style = $sheet->getStyle('A1:C1')->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN);
|
||||||
|
self::assertSame('A1:C1', $style->getSelectedCells(), 'getSelectedCells should not change after a style operation on a border range');
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue