Merge branch 'master' into PHP8-Sane-Property-Names
# Conflicts: # src/PhpSpreadsheet/Style/Alignment.php # src/PhpSpreadsheet/Style/Color.php
This commit is contained in:
commit
f27e074756
|
|
@ -456,7 +456,7 @@ has not yet been implemented in PhpSpreadsheet.
|
|||
|
||||
#### DCOUNTA
|
||||
|
||||
The DCOUNT function returns the count of cells that aren’t blank in a
|
||||
The DCOUNTA function returns the count of cells that aren’t blank in a
|
||||
column of a list or database and that match conditions that you specify.
|
||||
|
||||
##### Syntax
|
||||
|
|
|
|||
|
|
@ -587,6 +587,13 @@ execution whenever you are setting more than one style property. But the
|
|||
difference may barely be measurable unless you have many different
|
||||
styles in your workbook.
|
||||
|
||||
You can perform the opposite function, exporting a Style as an array,
|
||||
as follows:
|
||||
|
||||
``` php
|
||||
$styleArray = $spreadsheet->getActiveSheet()->getStyle('A3')->exportArray();
|
||||
```
|
||||
|
||||
### Number formats
|
||||
|
||||
You often want to format numbers in Excel. For example you may want a
|
||||
|
|
@ -753,69 +760,74 @@ another style array.
|
|||
|
||||
Array key | Maps to property
|
||||
-------------|-------------------
|
||||
fill | getFill()
|
||||
font | getFont()
|
||||
borders | getBorders()
|
||||
alignment | getAlignment()
|
||||
numberFormat | getNumberFormat()
|
||||
protection | getProtection()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Fill**
|
||||
|
||||
Array key | Maps to property
|
||||
-----------|-------------------
|
||||
fillType | setFillType()
|
||||
rotation | setRotation()
|
||||
startColor | getStartColor()
|
||||
endColor | getEndColor()
|
||||
color | getStartColor()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Font**
|
||||
|
||||
Array key | Maps to property
|
||||
------------|-------------------
|
||||
name | setName()
|
||||
bold | setBold()
|
||||
italic | setItalic()
|
||||
underline | setUnderline()
|
||||
strikethrough | setStrikethrough()
|
||||
color | getColor()
|
||||
size | setSize()
|
||||
superscript | setSuperscript()
|
||||
subscript | setSubscript()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Borders**
|
||||
|
||||
Array key | Maps to property
|
||||
------------------|-------------------
|
||||
allBorders | getLeft(); getRight(); getTop(); getBottom()
|
||||
left | getLeft()
|
||||
right | getRight()
|
||||
top | getTop()
|
||||
bottom | getBottom()
|
||||
diagonal | getDiagonal()
|
||||
vertical | getVertical()
|
||||
horizontal | getHorizontal()
|
||||
diagonalDirection | setDiagonalDirection()
|
||||
outline | setOutline()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Border**
|
||||
|
||||
Array key | Maps to property
|
||||
------------|-------------------
|
||||
borderStyle | setBorderStyle()
|
||||
color | getColor()
|
||||
alignment | setAlignment()
|
||||
borders | setBorders()
|
||||
fill | setFill()
|
||||
font | setFont()
|
||||
numberFormat | setNumberFormat()
|
||||
protection | setProtection()
|
||||
quotePrefix | setQuotePrefix()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Alignment**
|
||||
|
||||
Array key | Maps to property
|
||||
------------|-------------------
|
||||
horizontal | setHorizontal()
|
||||
vertical | setVertical()
|
||||
textRotation| setTextRotation()
|
||||
wrapText | setWrapText()
|
||||
shrinkToFit | setShrinkToFit()
|
||||
indent | setIndent()
|
||||
readOrder | setReadOrder()
|
||||
shrinkToFit | setShrinkToFit()
|
||||
textRotation| setTextRotation()
|
||||
vertical | setVertical()
|
||||
wrapText | setWrapText()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Border**
|
||||
|
||||
Array key | Maps to property
|
||||
------------|-------------------
|
||||
borderStyle | setBorderStyle()
|
||||
color | setColor()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Borders**
|
||||
|
||||
Array key | Maps to property
|
||||
------------------|-------------------
|
||||
allBorders | setLeft(); setRight(); setTop(); setBottom()
|
||||
bottom | setBottom()
|
||||
diagonal | setDiagonal()
|
||||
diagonalDirection | setDiagonalDirection()
|
||||
left | setLeft()
|
||||
right | setRight()
|
||||
top | setTop()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Color**
|
||||
|
||||
Array key | Maps to property
|
||||
------------|-------------------
|
||||
argb | setARGB()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Fill**
|
||||
|
||||
Array key | Maps to property
|
||||
-----------|-------------------
|
||||
color | getStartColor()
|
||||
endColor | getEndColor()
|
||||
fillType | setFillType()
|
||||
rotation | setRotation()
|
||||
startColor | getStartColor()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\Font**
|
||||
|
||||
Array key | Maps to property
|
||||
------------|-------------------
|
||||
bold | setBold()
|
||||
color | getColor()
|
||||
italic | setItalic()
|
||||
name | setName()
|
||||
size | setSize()
|
||||
strikethrough | setStrikethrough()
|
||||
subscript | setSubscript()
|
||||
superscript | setSuperscript()
|
||||
underline | setUnderline()
|
||||
|
||||
**\PhpOffice\PhpSpreadsheet\Style\NumberFormat**
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,10 @@ class Alignment extends Supervisor
|
|||
const READORDER_LTR = 1;
|
||||
const READORDER_RTL = 2;
|
||||
|
||||
// Special value for Text Rotation
|
||||
const TEXTROTATION_STACK_EXCEL = 255;
|
||||
const TEXTROTATION_STACK_PHPSPREADSHEET = -165; // 90 - 255
|
||||
|
||||
/**
|
||||
* Horizontal alignment.
|
||||
*
|
||||
|
|
@ -270,12 +274,12 @@ class Alignment extends Supervisor
|
|||
public function setTextRotation($rotation)
|
||||
{
|
||||
// Excel2007 value 255 => PhpSpreadsheet value -165
|
||||
if ($rotation == 255) {
|
||||
$rotation = -165;
|
||||
if ($rotation == self::TEXTROTATION_STACK_EXCEL) {
|
||||
$rotation = self::TEXTROTATION_STACK_PHPSPREADSHEET;
|
||||
}
|
||||
|
||||
// Set rotation
|
||||
if (($rotation >= -90 && $rotation <= 90) || $rotation == -165) {
|
||||
if (($rotation >= -90 && $rotation <= 90) || $rotation == self::TEXTROTATION_STACK_PHPSPREADSHEET) {
|
||||
if ($this->isSupervisor) {
|
||||
$styleArray = $this->getStyleArray(['textRotation' => $rotation]);
|
||||
$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
|
||||
|
|
@ -461,4 +465,18 @@ class Alignment extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'horizontal', $this->getHorizontal());
|
||||
$this->exportArray2($exportedArray, 'indent', $this->getIndent());
|
||||
$this->exportArray2($exportedArray, 'readOrder', $this->getReadOrder());
|
||||
$this->exportArray2($exportedArray, 'shrinkToFit', $this->getShrinkToFit());
|
||||
$this->exportArray2($exportedArray, 'textRotation', $this->getTextRotation());
|
||||
$this->exportArray2($exportedArray, 'vertical', $this->getVertical());
|
||||
$this->exportArray2($exportedArray, 'wrapText', $this->getWrapText());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,14 +74,6 @@ class Border extends Supervisor
|
|||
public function getSharedComponent()
|
||||
{
|
||||
switch ($this->parentPropertyName) {
|
||||
case 'allBorders':
|
||||
case 'horizontal':
|
||||
case 'inside':
|
||||
case 'outline':
|
||||
case 'vertical':
|
||||
throw new PhpSpreadsheetException('Cannot get shared component for a pseudo-border.');
|
||||
|
||||
break;
|
||||
case 'bottom':
|
||||
return $this->parent->getSharedComponent()->getBottom();
|
||||
case 'diagonal':
|
||||
|
|
@ -93,6 +85,8 @@ class Border extends Supervisor
|
|||
case 'top':
|
||||
return $this->parent->getSharedComponent()->getTop();
|
||||
}
|
||||
|
||||
throw new PhpSpreadsheetException('Cannot get shared component for a pseudo-border.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -228,4 +222,13 @@ class Border extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'borderStyle', $this->getBorderStyle());
|
||||
$this->exportArray2($exportedArray, 'color', $this->getColor());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -408,4 +408,17 @@ class Borders extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'bottom', $this->getBottom());
|
||||
$this->exportArray2($exportedArray, 'diagonal', $this->getDiagonal());
|
||||
$this->exportArray2($exportedArray, 'diagonalDirection', $this->getDiagonalDirection());
|
||||
$this->exportArray2($exportedArray, 'left', $this->getLeft());
|
||||
$this->exportArray2($exportedArray, 'right', $this->getRight());
|
||||
$this->exportArray2($exportedArray, 'top', $this->getTop());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,14 +75,14 @@ class Color extends Supervisor
|
|||
*/
|
||||
public function getSharedComponent()
|
||||
{
|
||||
switch ($this->parentPropertyName) {
|
||||
case 'endColor':
|
||||
return $this->parent->getSharedComponent()->getEndColor();
|
||||
case 'color':
|
||||
return $this->parent->getSharedComponent()->getColor();
|
||||
case 'startColor':
|
||||
return $this->parent->getSharedComponent()->getStartColor();
|
||||
if ($this->parentPropertyName === 'endColor') {
|
||||
return $this->parent->getSharedComponent()->getEndColor();
|
||||
}
|
||||
if ($this->parentPropertyName === 'startColor') {
|
||||
return $this->parent->getSharedComponent()->getStartColor();
|
||||
}
|
||||
|
||||
return $this->parent->getSharedComponent()->getColor();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -278,6 +278,7 @@ class Color extends Supervisor
|
|||
public static function changeBrightness($hexColourValue, $adjustPercentage)
|
||||
{
|
||||
$rgba = (strlen($hexColourValue) === 8);
|
||||
$adjustPercentage = max(-1.0, min(1.0, $adjustPercentage));
|
||||
|
||||
$red = self::getRed($hexColourValue, false);
|
||||
$green = self::getGreen($hexColourValue, false);
|
||||
|
|
@ -292,22 +293,6 @@ class Color extends Supervisor
|
|||
$blue += $blue * $adjustPercentage;
|
||||
}
|
||||
|
||||
if ($red < 0) {
|
||||
$red = 0;
|
||||
} elseif ($red > 255) {
|
||||
$red = 255;
|
||||
}
|
||||
if ($green < 0) {
|
||||
$green = 0;
|
||||
} elseif ($green > 255) {
|
||||
$green = 255;
|
||||
}
|
||||
if ($blue < 0) {
|
||||
$blue = 0;
|
||||
} elseif ($blue > 255) {
|
||||
$blue = 255;
|
||||
}
|
||||
|
||||
$rgb = strtoupper(
|
||||
str_pad(dechex((int) $red), 2, '0', 0) .
|
||||
str_pad(dechex((int) $green), 2, '0', 0) .
|
||||
|
|
@ -416,4 +401,12 @@ class Color extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'argb', $this->getARGB());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -311,4 +311,15 @@ class Fill extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'endColor', $this->getEndColor());
|
||||
$this->exportArray2($exportedArray, 'fillType', $this->getFillType());
|
||||
$this->exportArray2($exportedArray, 'rotation', $this->getRotation());
|
||||
$this->exportArray2($exportedArray, 'startColor', $this->getStartColor());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -539,4 +539,20 @@ class Font extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'bold', $this->getBold());
|
||||
$this->exportArray2($exportedArray, 'color', $this->getColor());
|
||||
$this->exportArray2($exportedArray, 'italic', $this->getItalic());
|
||||
$this->exportArray2($exportedArray, 'name', $this->getName());
|
||||
$this->exportArray2($exportedArray, 'size', $this->getSize());
|
||||
$this->exportArray2($exportedArray, 'strikethrough', $this->getStrikethrough());
|
||||
$this->exportArray2($exportedArray, 'subscript', $this->getSubscript());
|
||||
$this->exportArray2($exportedArray, 'superscript', $this->getSuperscript());
|
||||
$this->exportArray2($exportedArray, 'underline', $this->getUnderline());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -870,4 +870,12 @@ class NumberFormat extends Supervisor
|
|||
|
||||
return $value;
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'formatCode', $this->getFormatCode());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -183,4 +183,13 @@ class Protection extends Supervisor
|
|||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'locked', $this->getLocked());
|
||||
$this->exportArray2($exportedArray, 'hidden', $this->getHidden());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -634,4 +634,18 @@ class Style extends Supervisor
|
|||
{
|
||||
$this->index = $pValue;
|
||||
}
|
||||
|
||||
protected function exportArray1(): array
|
||||
{
|
||||
$exportedArray = [];
|
||||
$this->exportArray2($exportedArray, 'alignment', $this->getAlignment());
|
||||
$this->exportArray2($exportedArray, 'borders', $this->getBorders());
|
||||
$this->exportArray2($exportedArray, 'fill', $this->getFill());
|
||||
$this->exportArray2($exportedArray, 'font', $this->getFont());
|
||||
$this->exportArray2($exportedArray, 'numberFormat', $this->getNumberFormat());
|
||||
$this->exportArray2($exportedArray, 'protection', $this->getProtection());
|
||||
$this->exportArray2($exportedArray, 'quotePrefx', $this->getQuotePrefix());
|
||||
|
||||
return $exportedArray;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,4 +114,45 @@ abstract class Supervisor implements IComparable
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Export style as array.
|
||||
*
|
||||
* Available to anything which extends this class:
|
||||
* Alignment, Border, Borders, Color, Fill, Font,
|
||||
* NumberFormat, Protection, and Style.
|
||||
*/
|
||||
final public function exportArray(): array
|
||||
{
|
||||
return $this->exportArray1();
|
||||
}
|
||||
|
||||
/**
|
||||
* Abstract method to be implemented in anything which
|
||||
* extends this class.
|
||||
*
|
||||
* This method invokes exportArray2 with the names and values
|
||||
* of all properties to be included in output array,
|
||||
* returning that array to exportArray, then to caller.
|
||||
*/
|
||||
abstract protected function exportArray1(): array;
|
||||
|
||||
/**
|
||||
* Populate array from exportArray1.
|
||||
* This method is available to anything which extends this class.
|
||||
* The parameter index is the key to be added to the array.
|
||||
* The parameter objOrValue is either a primitive type,
|
||||
* which is the value added to the array,
|
||||
* or a Style object to be recursively added via exportArray.
|
||||
*
|
||||
* @param mixed $objOrValue
|
||||
*/
|
||||
final protected function exportArray2(array &$exportedArray, string $index, $objOrValue): void
|
||||
{
|
||||
if ($objOrValue instanceof self) {
|
||||
$exportedArray[$index] = $objOrValue->exportArray();
|
||||
} else {
|
||||
$exportedArray[$index] = $objOrValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class AlignmentTest extends TestCase
|
||||
{
|
||||
public function testAlignment(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('Cell1');
|
||||
$cell1->getStyle()->getAlignment()->setTextRotation(45);
|
||||
self::assertEquals(45, $cell1->getStyle()->getAlignment()->getTextRotation());
|
||||
$cell2 = $sheet->getCell('A2');
|
||||
$cell2->setValue('Cell2');
|
||||
$cell2->getStyle()->getAlignment()->setTextRotation(-45);
|
||||
self::assertEquals(-45, $cell2->getStyle()->getAlignment()->getTextRotation());
|
||||
// special value for stacked
|
||||
$cell3 = $sheet->getCell('A3');
|
||||
$cell3->setValue('Cell3');
|
||||
$cell3->getStyle()->getAlignment()->setTextRotation(255);
|
||||
self::assertEquals(-165, $cell3->getStyle()->getAlignment()->getTextRotation());
|
||||
}
|
||||
|
||||
public function testRotationTooHigh(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('Cell1');
|
||||
$cell1->getStyle()->getAlignment()->setTextRotation(91);
|
||||
self::assertEquals(0, $cell1->getStyle()->getAlignment()->getTextRotation());
|
||||
}
|
||||
|
||||
public function testRotationTooLow(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('Cell1');
|
||||
$cell1->getStyle()->getAlignment()->setTextRotation(-91);
|
||||
self::assertEquals(0, $cell1->getStyle()->getAlignment()->getTextRotation());
|
||||
}
|
||||
|
||||
public function testHorizontal(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('X');
|
||||
$cell1->getStyle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT)->setIndent(1);
|
||||
self::assertEquals(Alignment::HORIZONTAL_LEFT, $cell1->getStyle()->getAlignment()->getHorizontal());
|
||||
self::assertEquals(1, $cell1->getStyle()->getAlignment()->getIndent());
|
||||
$cell2 = $sheet->getCell('A2');
|
||||
$cell2->setValue('Y');
|
||||
$cell2->getStyle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT)->setIndent(2);
|
||||
self::assertEquals(Alignment::HORIZONTAL_RIGHT, $cell2->getStyle()->getAlignment()->getHorizontal());
|
||||
self::assertEquals(2, $cell2->getStyle()->getAlignment()->getIndent());
|
||||
$cell3 = $sheet->getCell('A3');
|
||||
$cell3->setValue('Z');
|
||||
// indent not supported for next style - changed to 0
|
||||
$cell3->getStyle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER_CONTINUOUS)->setIndent(3);
|
||||
self::assertEquals(Alignment::HORIZONTAL_CENTER_CONTINUOUS, $cell3->getStyle()->getAlignment()->getHorizontal());
|
||||
self::assertEquals(0, $cell3->getStyle()->getAlignment()->getIndent());
|
||||
}
|
||||
|
||||
public function testReadOrder(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('ABC');
|
||||
$cell1->getStyle()->getAlignment()->setReadOrder(0);
|
||||
self::assertEquals(0, $cell1->getStyle()->getAlignment()->getReadOrder());
|
||||
$cell1->getStyle()->getAlignment()->setReadOrder(1);
|
||||
self::assertEquals(1, $cell1->getStyle()->getAlignment()->getReadOrder());
|
||||
// following not supported - zero is used instead
|
||||
$cell1->getStyle()->getAlignment()->setReadOrder(-1);
|
||||
self::assertEquals(0, $cell1->getStyle()->getAlignment()->getReadOrder());
|
||||
$cell1->getStyle()->getAlignment()->setReadOrder(2);
|
||||
self::assertEquals(2, $cell1->getStyle()->getAlignment()->getReadOrder());
|
||||
// following not supported - zero is used instead
|
||||
$cell1->getStyle()->getAlignment()->setReadOrder(3);
|
||||
self::assertEquals(0, $cell1->getStyle()->getAlignment()->getReadOrder());
|
||||
}
|
||||
}
|
||||
|
|
@ -2,13 +2,16 @@
|
|||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Borders;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Color;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class BorderTest extends TestCase
|
||||
{
|
||||
public function testCase(): void
|
||||
public function testAllBorders(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$borders = $spreadsheet->getActiveSheet()->getStyle('A1')->getBorders();
|
||||
|
|
@ -22,5 +25,223 @@ class BorderTest extends TestCase
|
|||
|
||||
$actual = $bottom->getBorderStyle();
|
||||
self::assertSame(Border::BORDER_THIN, $actual, 'should have been set via allBorders');
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $borders->getDiagonal()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testAllBordersArray(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->getStyle('A1')->getBorders()->applyFromArray(['allBorders' => ['borderStyle' => Border::BORDER_THIN]]);
|
||||
$borders = $sheet->getCell('A1')->getStyle()->getBorders();
|
||||
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $borders->getDiagonal()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testAllBordersArrayNotSupervisor(): void
|
||||
{
|
||||
$borders = new Borders();
|
||||
$borders->applyFromArray(['allBorders' => ['borderStyle' => Border::BORDER_THIN]]);
|
||||
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $borders->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $borders->getDiagonal()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testOutline(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$borders = $sheet->getStyle('A1:B2')->getBorders();
|
||||
$outline = $borders->getOutline();
|
||||
$outline->setBorderStyle(Border::BORDER_THIN);
|
||||
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testInside(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$borders = $sheet->getStyle('A1:B2')->getBorders();
|
||||
$inside = $borders->getInside();
|
||||
$inside->setBorderStyle(Border::BORDER_THIN);
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testHorizontal(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$borders = $sheet->getStyle('A1:B2')->getBorders();
|
||||
$horizontal = $borders->getHorizontal();
|
||||
$horizontal->setBorderStyle(Border::BORDER_THIN);
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testVertical(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$borders = $sheet->getStyle('A1:B2')->getBorders();
|
||||
$vertical = $borders->getVertical();
|
||||
$vertical->setBorderStyle(Border::BORDER_THIN);
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('A2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('A2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B1')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B1')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getRight()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getBottom()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_THIN, $sheet->getCell('B2')->getStyle()->getBorders()->getLeft()->getBorderStyle());
|
||||
self::assertSame(Border::BORDER_NONE, $sheet->getCell('B2')->getStyle()->getBorders()->getTop()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testNoSupervisorAllBorders(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$borders = new Borders();
|
||||
$borders->getAllBorders();
|
||||
}
|
||||
|
||||
public function testNoSupervisorOutline(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$borders = new Borders();
|
||||
$borders->getOutline();
|
||||
}
|
||||
|
||||
public function testNoSupervisorInside(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$borders = new Borders();
|
||||
$borders->getInside();
|
||||
}
|
||||
|
||||
public function testNoSupervisorVertical(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$borders = new Borders();
|
||||
$borders->getVertical();
|
||||
}
|
||||
|
||||
public function testNoSupervisorHorizontal(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$borders = new Borders();
|
||||
$borders->getHorizontal();
|
||||
}
|
||||
|
||||
public function testGetSharedComponentPseudo(): void
|
||||
{
|
||||
$this->expectException(PhpSpreadsheetException::class);
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->getStyle('A1')->getBorders()->getHorizontal()->setBorderStyle(Border::BORDER_MEDIUM);
|
||||
$sheet->getStyle('A1')->getBorders()->getHorizontal()->getSharedComponent();
|
||||
}
|
||||
|
||||
public function testBorderStyle(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->getStyle('A1')->getBorders()->getTop()->setBorderStyle(false);
|
||||
$sheet->getStyle('A2')->getBorders()->getTop()->setBorderStyle(true);
|
||||
self::assertEquals(Border::BORDER_NONE, $sheet->getStyle('A1')->getBorders()->getTop()->getBorderStyle());
|
||||
self::assertEquals(Border::BORDER_MEDIUM, $sheet->getStyle('A2')->getBorders()->getTop()->getBorderStyle());
|
||||
$sheet->getStyle('A3')->getBorders()->getTop()->applyFromArray(['borderStyle' => Border::BORDER_MEDIUM]);
|
||||
self::assertEquals(Border::BORDER_MEDIUM, $sheet->getStyle('A3')->getBorders()->getTop()->getBorderStyle());
|
||||
$border = new Border();
|
||||
$border->setBorderStyle(Border::BORDER_THIN)->setColor(new Color('FFFF0000'));
|
||||
self::assertEquals('FFFF0000', $border->getColor()->getARGB());
|
||||
self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testDiagonalDirection(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->getStyle('A1')->getBorders()->getDiagonal()->setBorderStyle(Border::BORDER_MEDIUM);
|
||||
$sheet->getStyle('A1')->getBorders()->setDiagonalDirection(Borders::DIAGONAL_BOTH);
|
||||
$borders = $sheet->getStyle('A1')->getBorders();
|
||||
|
||||
self::assertSame(Border::BORDER_MEDIUM, $borders->getDiagonal()->getBorderStyle());
|
||||
self::assertSame(Borders::DIAGONAL_BOTH, $borders->getDiagonalDirection());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,4 +137,21 @@ class ColorTest extends TestCase
|
|||
{
|
||||
return require 'tests/data/Style/Color/ColorChangeBrightness.php';
|
||||
}
|
||||
|
||||
public function testDefaultColor(): void
|
||||
{
|
||||
$color = new Color();
|
||||
$color->setARGB('FFFF0000');
|
||||
self::assertEquals('FFFF0000', $color->getARGB());
|
||||
self::assertEquals('FF0000', $color->getRGB());
|
||||
$color->setARGB('');
|
||||
self::assertEquals(Color::COLOR_BLACK, $color->getARGB());
|
||||
self::assertEquals('000000', $color->getRGB());
|
||||
$color->setARGB('FFFF0000');
|
||||
self::assertEquals('FFFF0000', $color->getARGB());
|
||||
self::assertEquals('FF0000', $color->getRGB());
|
||||
$color->setRGB('');
|
||||
self::assertEquals(Color::COLOR_BLACK, $color->getARGB());
|
||||
self::assertEquals('000000', $color->getRGB());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Style\Conditional;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class ConditionalTest extends TestCase
|
||||
{
|
||||
public function testClone(): void
|
||||
{
|
||||
$condition1 = new Conditional();
|
||||
$condition1->setConditionType(Conditional::CONDITION_CELLIS);
|
||||
$condition1->setOperatorType(Conditional::OPERATOR_LESSTHAN);
|
||||
$condition1->addCondition(0.6);
|
||||
$condition1->getStyle()->getFill()
|
||||
->setFillType(Fill::FILL_SOLID)
|
||||
->getEndColor()->setARGB('FFFF0000');
|
||||
$conditionclone = clone $condition1;
|
||||
self::AssertEquals($condition1, $conditionclone);
|
||||
self::AssertEquals($condition1->getStyle(), $conditionclone->getStyle());
|
||||
self::AssertNotSame($condition1->getStyle(), $conditionclone->getStyle());
|
||||
}
|
||||
|
||||
public function testVariousAdds(): void
|
||||
{
|
||||
$condition1 = new Conditional();
|
||||
$condition1->setConditionType(Conditional::CONDITION_CELLIS);
|
||||
$condition1->setOperatorType(Conditional::OPERATOR_LESSTHAN);
|
||||
$condition1->addCondition(0.6);
|
||||
$condition1->getStyle()->getFill()
|
||||
->setFillType(Fill::FILL_SOLID)
|
||||
->getEndColor()->setARGB('FFFF0000');
|
||||
$condition2 = new Conditional();
|
||||
$condition2->setConditionType(Conditional::CONDITION_CELLIS);
|
||||
$condition2->setOperatorType(Conditional::OPERATOR_LESSTHAN);
|
||||
$condition2->setConditions(0.6);
|
||||
$condition2->getStyle()->getFill()
|
||||
->setFillType(Fill::FILL_SOLID)
|
||||
->getEndColor()->setARGB('FFFF0000');
|
||||
$condition3 = new Conditional();
|
||||
$condition3->setConditionType(Conditional::CONDITION_CELLIS);
|
||||
$condition3->setOperatorType(Conditional::OPERATOR_LESSTHAN);
|
||||
$condition3->setConditions([0.6]);
|
||||
$condition3->getStyle()->getFill()
|
||||
->setFillType(Fill::FILL_SOLID)
|
||||
->getEndColor()->setARGB('FFFF0000');
|
||||
self::AssertEquals($condition1, $condition2);
|
||||
self::AssertEquals($condition1, $condition3);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Color;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Font;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Protection;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class ExportArrayTest extends TestCase
|
||||
{
|
||||
public function testStyleCopy(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('Cell A1');
|
||||
$cell1style = $cell1->getStyle();
|
||||
$cell1style->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
|
||||
$cell1style->getFont()->getColor()->setARGB('FFFF0000');
|
||||
$cell1style->getFont()->setBold(true);
|
||||
$cell1style->getFill()->setFillType(Fill::FILL_PATTERN_GRAY125);
|
||||
$cell1style->getFill()->setStartColor(new Color('FF0000FF'));
|
||||
$cell1style->getFill()->setEndColor(new Color('FF00FF00'));
|
||||
$cell1style->getFont()->setUnderline(true);
|
||||
self::assertEquals(Font::UNDERLINE_SINGLE, $cell1style->getFont()->getUnderline());
|
||||
$cell1style->getProtection()->setHidden(Protection::PROTECTION_UNPROTECTED);
|
||||
$cell1style->getProtection()->setLocked(Protection::PROTECTION_UNPROTECTED);
|
||||
$styleArray = $cell1style->exportArray();
|
||||
$cell2 = $sheet->getCell('B1');
|
||||
$cell2->setValue('Cell B1');
|
||||
$cell2style = $cell2->getStyle();
|
||||
$cell2style->applyFromArray($styleArray);
|
||||
|
||||
self::AssertEquals($cell1style->getAlignment()->getHorizontal(), $cell2style->getAlignment()->getHorizontal());
|
||||
self::AssertEquals($cell1style->getFont()->getColor()->getARGB(), $cell2style->getFont()->getColor()->getARGB());
|
||||
self::AssertEquals($cell1style->getFont()->getBold(), $cell2style->getFont()->getBold());
|
||||
self::AssertEquals($cell1style->getFont()->getUnderline(), $cell2style->getFont()->getUnderline());
|
||||
self::AssertEquals($cell1style->getFill()->getFillType(), $cell2style->getFill()->getFillType());
|
||||
self::AssertEquals($cell1style->getFill()->getStartColor()->getARGB(), $cell2style->getFill()->getStartColor()->getARGB());
|
||||
self::AssertEquals($cell1style->getFill()->getEndColor()->getARGB(), $cell2style->getFill()->getEndColor()->getARGB());
|
||||
self::AssertEquals($cell1style->getProtection()->getLocked(), $cell2style->getProtection()->getLocked());
|
||||
self::AssertEquals($cell1style->getProtection()->getHidden(), $cell2style->getProtection()->getHidden());
|
||||
|
||||
self::AssertEquals($cell1style->getHashCode(), $cell2style->getHashCode());
|
||||
self::AssertEquals($cell1style->getAlignment()->getHashCode(), $cell2style->getAlignment()->getHashCode());
|
||||
self::AssertEquals($cell1style->getFont()->getHashCode(), $cell2style->getFont()->getHashCode());
|
||||
self::AssertEquals($cell1style->getFill()->getHashCode(), $cell2style->getFill()->getHashCode());
|
||||
self::AssertEquals($cell1style->getProtection()->getHashCode(), $cell2style->getProtection()->getHashCode());
|
||||
}
|
||||
|
||||
public function testStyleFromArrayCopy(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('Cell A1');
|
||||
$cell1style = $cell1->getStyle();
|
||||
$cell1style->getAlignment()->applyFromArray(['horizontal' => Alignment::HORIZONTAL_RIGHT]);
|
||||
$cell1style->getFont()->getColor()->setARGB('FFFF0000');
|
||||
$cell1style->getFont()->applyFromArray(['bold' => true]);
|
||||
$cell1style->getFill()->applyFromArray(['fillType' => Fill::FILL_PATTERN_GRAY125]);
|
||||
$cell1style->getFill()->getStartColor()->applyFromArray(['argb' => 'FF0000FF']);
|
||||
$cell1style->getFill()->getEndColor()->setRGB('00FF00');
|
||||
$cell1style->getFill()->setRotation(45);
|
||||
$cell1style->getFont()->setUnderline(true);
|
||||
self::assertEquals(Font::UNDERLINE_SINGLE, $cell1style->getFont()->getUnderline());
|
||||
$cell1style->getProtection()->applyFromArray(['hidden' => Protection::PROTECTION_UNPROTECTED, 'locked' => Protection::PROTECTION_UNPROTECTED]);
|
||||
$styleArray = $cell1style->exportArray();
|
||||
$cell2 = $sheet->getCell('B1');
|
||||
$cell2->setValue('Cell B1');
|
||||
$cell2style = $cell2->getStyle();
|
||||
$cell2style->applyFromArray($styleArray);
|
||||
|
||||
self::AssertEquals($cell1style->getAlignment()->getHorizontal(), $cell2style->getAlignment()->getHorizontal());
|
||||
self::AssertEquals($cell1style->getFont()->getColor()->getARGB(), $cell2style->getFont()->getColor()->getARGB());
|
||||
self::AssertEquals($cell1style->getFont()->getBold(), $cell2style->getFont()->getBold());
|
||||
self::AssertEquals($cell1style->getFont()->getUnderline(), $cell2style->getFont()->getUnderline());
|
||||
self::AssertEquals($cell1style->getFill()->getFillType(), $cell2style->getFill()->getFillType());
|
||||
self::AssertEquals($cell1style->getFill()->getRotation(), $cell2style->getFill()->getRotation());
|
||||
self::AssertEquals($cell1style->getFill()->getStartColor()->getARGB(), $cell2style->getFill()->getStartColor()->getARGB());
|
||||
self::AssertEquals($cell1style->getFill()->getEndColor()->getARGB(), $cell2style->getFill()->getEndColor()->getARGB());
|
||||
self::AssertEquals($cell1style->getProtection()->getLocked(), $cell2style->getProtection()->getLocked());
|
||||
self::AssertEquals($cell1style->getProtection()->getHidden(), $cell2style->getProtection()->getHidden());
|
||||
|
||||
self::AssertEquals($cell1style->getFill()->getStartColor()->getHashCode(), $cell2style->getFill()->getStartColor()->getHashCode());
|
||||
self::AssertEquals($cell1style->getFill()->getEndColor()->getHashCode(), $cell2style->getFill()->getEndColor()->getHashCode());
|
||||
}
|
||||
|
||||
public function testNumberFormat(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1style = $cell1->getStyle();
|
||||
$fmt2 = '$ #,##0.000';
|
||||
$cell1style->getNumberFormat()->setFormatCode($fmt2);
|
||||
$cell1style->getFont()->setUnderline('');
|
||||
self::assertEquals(Font::UNDERLINE_NONE, $cell1style->getFont()->getUnderline());
|
||||
$cell1->setValue(2345.679);
|
||||
$styleArray = $cell1style->exportArray();
|
||||
self::assertEquals('$ 2,345.679', $cell1->getFormattedValue());
|
||||
|
||||
$cell2 = $sheet->getCell('B1');
|
||||
$cell2->setValue(12345.679);
|
||||
$cell2style = $cell2->getStyle();
|
||||
$cell2style->applyFromArray($styleArray);
|
||||
self::assertEquals('$ 12,345.679', $cell2->getFormattedValue());
|
||||
|
||||
self::AssertEquals($cell1style->getNumberFormat()->getHashCode(), $cell2style->getNumberFormat()->getHashCode());
|
||||
}
|
||||
|
||||
public function testNumberFormatFromArray(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1style = $cell1->getStyle();
|
||||
$fmt2 = '$ #,##0.000';
|
||||
$cell1style->getNumberFormat()->applyFromArray(['formatCode' => $fmt2]);
|
||||
$cell1style->getFont()->setUnderline('');
|
||||
self::assertEquals(Font::UNDERLINE_NONE, $cell1style->getFont()->getUnderline());
|
||||
$cell1style->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN);
|
||||
$cell1->setValue(2345.679);
|
||||
$styleArray = $cell1style->exportArray();
|
||||
self::assertEquals('$ 2,345.679', $cell1->getFormattedValue());
|
||||
|
||||
$cell2 = $sheet->getCell('B1');
|
||||
$cell2->setValue(12345.679);
|
||||
$cell2style = $cell2->getStyle();
|
||||
$cell2style->applyFromArray($styleArray);
|
||||
self::assertEquals('$ 12,345.679', $cell2->getFormattedValue());
|
||||
|
||||
self::AssertEquals($cell1style->getNumberFormat()->getHashCode(), $cell2style->getNumberFormat()->getHashCode());
|
||||
self::AssertEquals($cell1style->getBorders()->getHashCode(), $cell2style->getBorders()->getHashCode());
|
||||
self::AssertEquals($cell1style->getBorders()->getTop()->getHashCode(), $cell2style->getBorders()->getTop()->getHashCode());
|
||||
self::AssertEquals($cell1style->getBorders()->getTop()->getBorderStyle(), $cell2style->getBorders()->getTop()->getBorderStyle());
|
||||
}
|
||||
|
||||
public function testStackedRotation(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue('Cell A1');
|
||||
$cell1style = $cell1->getStyle();
|
||||
$cell1style->getAlignment()->setTextRotation(Alignment::TEXTROTATION_STACK_EXCEL);
|
||||
self::assertEquals(Alignment::TEXTROTATION_STACK_PHPSPREADSHEET, $cell1style->getAlignment()->getTextRotation());
|
||||
$styleArray = $cell1style->exportArray();
|
||||
$cell2 = $sheet->getCell('B1');
|
||||
$cell2->setValue('Cell B1');
|
||||
$cell2style = $cell2->getStyle();
|
||||
$cell2style->applyFromArray($styleArray);
|
||||
|
||||
self::AssertEquals($cell1style->getAlignment()->getTextRotation(), $cell2style->getAlignment()->getTextRotation());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Style\Color;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class FillTest extends TestCase
|
||||
{
|
||||
public function testNonSupervisorColor(): void
|
||||
{
|
||||
$fill = new Fill();
|
||||
$startColor = new Color('FFFF0000');
|
||||
$endColor = new Color('FF00FFFF');
|
||||
$fill->setFillType(Fill::FILL_PATTERN_GRAY125);
|
||||
$fill->setStartColor($startColor);
|
||||
$fill->setEndColor($endColor);
|
||||
self::assertEquals('FF0000', $fill->getStartColor()->getRGB());
|
||||
self::assertEquals('00FFFF', $fill->getEndColor()->getRGB());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class NumberFormatBuiltinTest extends TestCase
|
||||
{
|
||||
public function testBuiltinCodes(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cell1 = $sheet->getCell('A1');
|
||||
$cell1->setValue(1);
|
||||
$cell1->getStyle()->getNumberFormat()->setBuiltInFormatCode(2); // 0.00
|
||||
self::assertEquals('1.00', $cell1->getFormattedValue());
|
||||
$cell2 = $sheet->getCell('A2');
|
||||
$cell2->setValue(1234);
|
||||
$cell2->getStyle()->getNumberFormat()->setFormatCode('#,##0'); // builtin 3
|
||||
self::assertEquals(3, $cell2->getStyle()->getNumberFormat()->getBuiltinFormatCode());
|
||||
self::assertEquals('1,234', $cell2->getFormattedValue());
|
||||
$cell3 = $sheet->getCell('A3');
|
||||
$cell3->setValue(1234);
|
||||
$cell3->getStyle()->getNumberFormat()->setFormatCode(''); // General
|
||||
self::assertEquals(NumberFormat::FORMAT_GENERAL, $cell3->getStyle()->getNumberFormat()->getFormatCode());
|
||||
self::assertEquals(0, $cell3->getStyle()->getNumberFormat()->getBuiltinFormatCode());
|
||||
self::assertEquals('1234', $cell3->getFormattedValue());
|
||||
// non-supervisor
|
||||
$numberFormat = new NumberFormat();
|
||||
$numberFormat->setBuiltInFormatCode(4);
|
||||
self::assertEquals('#,##0.00', $numberFormat->getFormatCode());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheetTests\Style;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class StyleTest extends TestCase
|
||||
{
|
||||
public function testStyleOddMethods(): void
|
||||
{
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$cellCoordinate = 'A1';
|
||||
$cell1 = $sheet->getCell($cellCoordinate);
|
||||
$cell1style = $cell1->getStyle();
|
||||
self::assertSame($spreadsheet, $cell1style->getParent());
|
||||
$styleArray = ['alignment' => ['textRotation' => 45]];
|
||||
$outArray = $cell1style->getStyleArray($styleArray);
|
||||
self::assertEquals($styleArray, $outArray['quotePrefix']);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue