162 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			162 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?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());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |