| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 10:28:36 +00:00
										 |  |  | namespace PhpOffice\PhpSpreadsheetTests\Writer\Ods; | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 16:13:10 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Calculation\Functions; | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Cell\DataType; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Shared\Date; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Spreadsheet; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Style\Color; | 
					
						
							| 
									
										
										
										
											2017-03-04 15:18:56 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Style\Fill; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Style\Font; | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Style\NumberFormat; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Writer\Ods; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Writer\Ods\Content; | 
					
						
							| 
									
										
										
										
											2017-11-08 15:48:01 +00:00
										 |  |  | use PHPUnit\Framework\TestCase; | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-08 15:48:01 +00:00
										 |  |  | class ContentTest extends TestCase | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2020-05-17 09:35:55 +00:00
										 |  |  |     private $samplesPath = 'tests/data/Writer/Ods'; | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 16:13:10 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2017-03-06 05:40:27 +00:00
										 |  |  |     private $compatibilityMode; | 
					
						
							| 
									
										
										
										
											2017-03-04 16:13:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 10:28:36 +00:00
										 |  |  |     protected function setUp(): void | 
					
						
							| 
									
										
										
										
											2017-03-04 16:13:10 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         parent::setUp(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->compatibilityMode = Functions::getCompatibilityMode(); | 
					
						
							|  |  |  |         Functions::setCompatibilityMode(Functions::COMPATIBILITY_OPENOFFICE); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 10:28:36 +00:00
										 |  |  |     protected function tearDown(): void | 
					
						
							| 
									
										
										
										
											2017-03-04 16:13:10 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         parent::tearDown(); | 
					
						
							|  |  |  |         Functions::setCompatibilityMode($this->compatibilityMode); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testWriteEmptySpreadsheet(): void | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-04-16 05:13:16 +00:00
										 |  |  |         $content = new Content(new Ods(new Spreadsheet())); | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |         $xml = $content->write(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-20 05:55:42 +00:00
										 |  |  |         self::assertXmlStringEqualsXmlFile($this->samplesPath . '/content-empty.xml', $xml); | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testWriteSpreadsheet(): void | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         $workbook = new Spreadsheet(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Worksheet 1
 | 
					
						
							|  |  |  |         $worksheet1 = $workbook->getActiveSheet(); | 
					
						
							|  |  |  |         $worksheet1->setCellValue('A1', 1); // Number
 | 
					
						
							|  |  |  |         $worksheet1->setCellValue('B1', 12345.6789); // Number
 | 
					
						
							| 
									
										
										
										
											2017-03-04 15:35:53 +00:00
										 |  |  |         $worksheet1->setCellValue('C1', '1'); // Number without cast
 | 
					
						
							|  |  |  |         $worksheet1->setCellValueExplicit('D1', '01234', DataType::TYPE_STRING); // Number casted to string
 | 
					
						
							|  |  |  |         $worksheet1->setCellValue('E1', 'Lorem ipsum'); // String
 | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $worksheet1->setCellValue('A2', true); // Boolean
 | 
					
						
							|  |  |  |         $worksheet1->setCellValue('B2', false); // Boolean
 | 
					
						
							| 
									
										
										
										
											2017-03-04 16:13:10 +00:00
										 |  |  |         $worksheet1->setCellValueExplicit( | 
					
						
							|  |  |  |             'C2', | 
					
						
							|  |  |  |             '=IF(A3, CONCATENATE(A1, " ", A2), CONCATENATE(A2, " ", A1))', | 
					
						
							|  |  |  |             DataType::TYPE_FORMULA | 
					
						
							|  |  |  |         ); // Formula
 | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $worksheet1->setCellValue('D2', Date::PHPToExcel(1488635026)); // Date
 | 
					
						
							|  |  |  |         $worksheet1->getStyle('D2') | 
					
						
							|  |  |  |             ->getNumberFormat() | 
					
						
							|  |  |  |             ->setFormatCode(NumberFormat::FORMAT_DATE_DATETIME); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 15:18:56 +00:00
										 |  |  |         // Styles
 | 
					
						
							|  |  |  |         $worksheet1->getStyle('A1')->getFont()->setBold(true); | 
					
						
							|  |  |  |         $worksheet1->getStyle('B1')->getFont()->setItalic(true); | 
					
						
							| 
									
										
										
										
											2017-03-04 15:35:53 +00:00
										 |  |  |         $worksheet1->getStyle('C1')->getFont()->setName('Courier'); | 
					
						
							| 
									
										
										
										
											2017-03-04 15:18:56 +00:00
										 |  |  |         $worksheet1->getStyle('C1')->getFont()->setSize(14); | 
					
						
							|  |  |  |         $worksheet1->getStyle('C1')->getFont()->setColor(new Color(Color::COLOR_BLUE)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $worksheet1->getStyle('C1')->getFill()->setFillType(Fill::FILL_SOLID); | 
					
						
							|  |  |  |         $worksheet1->getStyle('C1')->getFill()->setStartColor(new Color(Color::COLOR_RED)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $worksheet1->getStyle('C1')->getFont()->setUnderline(Font::UNDERLINE_SINGLE); | 
					
						
							|  |  |  |         $worksheet1->getStyle('C2')->getFont()->setUnderline(Font::UNDERLINE_DOUBLE); | 
					
						
							|  |  |  |         $worksheet1->getStyle('D2')->getFont()->setUnderline(Font::UNDERLINE_NONE); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |         // Worksheet 2
 | 
					
						
							|  |  |  |         $worksheet2 = $workbook->createSheet(); | 
					
						
							|  |  |  |         $worksheet2->setTitle('New Worksheet'); | 
					
						
							|  |  |  |         $worksheet2->setCellValue('A1', 2); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Write
 | 
					
						
							| 
									
										
										
										
											2017-04-16 05:13:16 +00:00
										 |  |  |         $content = new Content(new Ods($workbook)); | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |         $xml = $content->write(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-20 05:55:42 +00:00
										 |  |  |         self::assertXmlStringEqualsXmlFile($this->samplesPath . '/content-with-data.xml', $xml); | 
					
						
							| 
									
										
										
										
											2017-03-04 14:22:20 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } |