101 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace PhpOffice\PhpSpreadsheetTests\Reader\Xml;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Reader\Xml;
							 | 
						||
| 
								 | 
							
								use PHPUnit\Framework\TestCase;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class XmlLoadTest extends TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function testLoad(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $filename = __DIR__
							 | 
						||
| 
								 | 
							
								            . '/../../../..'
							 | 
						||
| 
								 | 
							
								            . '/samples/templates/excel2003.xml';
							 | 
						||
| 
								 | 
							
								        $reader = new Xml();
							 | 
						||
| 
								 | 
							
								        $spreadsheet = $reader->load($filename);
							 | 
						||
| 
								 | 
							
								        self::assertEquals(2, $spreadsheet->getSheetCount());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getSheet(1);
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Report Data', $sheet->getTitle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('BCD', $sheet->getCell('A4')->getValue());
							 | 
						||
| 
								 | 
							
								        $props = $spreadsheet->getProperties();
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Mark Baker', $props->getCreator());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('AbCd1234', $props->getCustomPropertyValue('my_API_Token'));
							 | 
						||
| 
								 | 
							
								        self::assertEquals('2', $props->getCustomPropertyValue('myאInt'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getSheet(0);
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Sample Data', $sheet->getTitle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Test String 1', $sheet->getCell('A1')->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Test with (") in string', $sheet->getCell('A4')->getValue());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self::assertEquals(22269, $sheet->getCell('A10')->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('dd/mm/yyyy', $sheet->getCell('A10')->getStyle()->getNumberFormat()->getFormatCode());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('19/12/1960', $sheet->getCell('A10')->getFormattedValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(1.5, $sheet->getCell('A11')->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('# ?0/??0', $sheet->getCell('A11')->getStyle()->getNumberFormat()->getFormatCode());
							 | 
						||
| 
								 | 
							
								        // Same pattern, same value, different display in Gnumeric vs Excel
							 | 
						||
| 
								 | 
							
								        //self::assertEquals('1 1/2', $sheet->getCell('A11')->getFormattedValue());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self::assertEquals('=B1+C1', $sheet->getCell('H1')->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('=E2&F2', $sheet->getCell('J2')->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('=SUM(C1:C4)', $sheet->getCell('I5')->getValue());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // property not yet supported
							 | 
						||
| 
								 | 
							
								        //self::assertFalse($sheet->getRowDimension(30)->getVisible());
							 | 
						||
| 
								 | 
							
								        $hyperlink = $sheet->getCell('A21');
							 | 
						||
| 
								 | 
							
								        self::assertEquals('PhpSpreadsheet', $hyperlink->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('https://github.com/PHPOffice/PhpSpreadsheet', $hyperlink->getHyperlink()->getUrl());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testLoadFilter(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $filename = __DIR__
							 | 
						||
| 
								 | 
							
								            . '/../../../..'
							 | 
						||
| 
								 | 
							
								            . '/samples/templates/excel2003.xml';
							 | 
						||
| 
								 | 
							
								        $reader = new Xml();
							 | 
						||
| 
								 | 
							
								        $filter = new XmlFilter();
							 | 
						||
| 
								 | 
							
								        $reader->setReadFilter($filter);
							 | 
						||
| 
								 | 
							
								        $spreadsheet = $reader->load($filename);
							 | 
						||
| 
								 | 
							
								        self::assertEquals(2, $spreadsheet->getSheetCount());
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getSheet(1);
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Report Data', $sheet->getTitle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('', $sheet->getCell('A4')->getValue());
							 | 
						||
| 
								 | 
							
								        $props = $spreadsheet->getProperties();
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Mark Baker', $props->getCreator());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testLoadSelectedSheets(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $filename = __DIR__
							 | 
						||
| 
								 | 
							
								            . '/../../../..'
							 | 
						||
| 
								 | 
							
								            . '/samples/templates/excel2003.xml';
							 | 
						||
| 
								 | 
							
								        $reader = new Xml();
							 | 
						||
| 
								 | 
							
								        $reader->setLoadSheetsOnly(['Unknown Sheet', 'Report Data']);
							 | 
						||
| 
								 | 
							
								        $spreadsheet = $reader->load($filename);
							 | 
						||
| 
								 | 
							
								        self::assertEquals(1, $spreadsheet->getSheetCount());
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getSheet(0);
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Report Data', $sheet->getTitle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Third Heading', $sheet->getCell('C2')->getValue());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testLoadUnusableSample(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Sample spreadsheet is not readable by Excel.
							 | 
						||
| 
								 | 
							
								        // But PhpSpreadsheet can load it except for coverage test.
							 | 
						||
| 
								 | 
							
								        //global $argv;
							 | 
						||
| 
								 | 
							
								        //if (in_array('--coverage-clover', $argv)) {
							 | 
						||
| 
								 | 
							
								        //    self::markTestSkipped('Mysterious Travis coverage failure IOFactoryTest');
							 | 
						||
| 
								 | 
							
								        //}
							 | 
						||
| 
								 | 
							
								        $filename = __DIR__
							 | 
						||
| 
								 | 
							
								            . '/../../../..'
							 | 
						||
| 
								 | 
							
								            //. '/samples/templates/Excel2003XMLTest.xml';
							 | 
						||
| 
								 | 
							
								            . '/samples/templates/excel2003.short.bad.xml';
							 | 
						||
| 
								 | 
							
								        $reader = new Xml();
							 | 
						||
| 
								 | 
							
								        $spreadsheet = $reader->load($filename);
							 | 
						||
| 
								 | 
							
								        self::assertEquals(1, $spreadsheet->getSheetCount());
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getSheet(0);
							 | 
						||
| 
								 | 
							
								        self::assertEquals('Sample Data', $sheet->getTitle());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |