NamespaceNonStdTest.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
  4. use PhpOffice\PhpSpreadsheet\Style\Border;
  5. use PhpOffice\PhpSpreadsheet\Style\Fill;
  6. use PhpOffice\PhpSpreadsheet\Style\Font;
  7. class NamespaceNonStdTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var string
  11. */
  12. private static $testbook = 'tests/data/Reader/XLSX/namespacenonstd.xlsx';
  13. public function testPreliminaries(): void
  14. {
  15. $file = 'zip://';
  16. $file .= self::$testbook;
  17. $file .= '#xl/workbook.xml';
  18. $data = file_get_contents($file);
  19. // confirm that file contains expected namespaced xml tag
  20. if ($data === false) {
  21. self::fail('Unable to read file');
  22. } else {
  23. if (strpos(__FILE__, 'NonStd') === false) {
  24. self::assertStringNotContainsString('nonstd', self::$testbook);
  25. self::assertStringContainsString('<workbook ', $data);
  26. } else {
  27. self::assertStringContainsString('nonstd', self::$testbook);
  28. self::assertStringContainsString('<x:workbook ', $data);
  29. }
  30. }
  31. }
  32. public function testInfo(): void
  33. {
  34. $reader = new Xlsx();
  35. $workSheetInfo = $reader->listWorkSheetInfo(self::$testbook);
  36. $info0 = $workSheetInfo[0];
  37. self::assertEquals('SylkTest', $info0['worksheetName']);
  38. self::assertEquals('J', $info0['lastColumnLetter']);
  39. self::assertEquals(9, $info0['lastColumnIndex']);
  40. self::assertEquals(18, $info0['totalRows']);
  41. self::assertEquals(10, $info0['totalColumns']);
  42. }
  43. public function testSheetNames(): void
  44. {
  45. $reader = new Xlsx();
  46. $worksheetNames = $reader->listWorksheetNames(self::$testbook);
  47. self::assertEquals(['SylkTest', 'Second'], $worksheetNames);
  48. }
  49. public function testActive(): void
  50. {
  51. $reader = new Xlsx();
  52. $spreadsheet = $reader->load(self::$testbook);
  53. $sheet = $spreadsheet->getActiveSheet();
  54. self::assertSame('Second', $sheet->getTitle());
  55. self::assertSame('A2', $sheet->getFreezePane());
  56. self::assertSame('A2', $sheet->getTopLeftCell());
  57. self::assertSame('B3', $sheet->getSelectedCells());
  58. $sheet = $spreadsheet->getSheetByNameOrThrow('SylkTest');
  59. self::assertNull($sheet->getFreezePane());
  60. self::assertNull($sheet->getTopLeftCell());
  61. }
  62. public function testLoadXlsx(): void
  63. {
  64. $reader = new Xlsx();
  65. $spreadsheet = $reader->load(self::$testbook);
  66. $sheet = $spreadsheet->getSheet(0);
  67. self::assertEquals('SylkTest', $sheet->getTitle());
  68. //if (strpos(__FILE__, 'NonStd') !== false) {
  69. // self::markTestIncomplete('Not yet ready');
  70. //}
  71. self::assertEquals('FFFF0000', $sheet->getCell('A1')->getStyle()->getFont()->getColor()->getARGB());
  72. self::assertEquals(Fill::FILL_PATTERN_GRAY125, $sheet->getCell('A2')->getStyle()->getFill()->getFillType());
  73. self::assertEquals(Font::UNDERLINE_SINGLE, $sheet->getCell('A4')->getStyle()->getFont()->getUnderline());
  74. self::assertEquals('Test with (;) in string', $sheet->getCell('A4')->getValue());
  75. self::assertEquals(22269, $sheet->getCell('A10')->getValue());
  76. self::assertEquals('dd/mm/yyyy', $sheet->getCell('A10')->getStyle()->getNumberFormat()->getFormatCode());
  77. self::assertEquals('19/12/1960', $sheet->getCell('A10')->getFormattedValue());
  78. self::assertEquals(1.5, $sheet->getCell('A11')->getValue());
  79. self::assertEquals('# ?/?', $sheet->getCell('A11')->getStyle()->getNumberFormat()->getFormatCode());
  80. self::assertEquals('1 1/2', $sheet->getCell('A11')->getFormattedValue());
  81. self::assertEquals('=B1+C1', $sheet->getCell('H1')->getValue());
  82. self::assertEquals('=E2&F2', $sheet->getCell('J2')->getValue());
  83. self::assertEquals('=SUM(C1:C4)', $sheet->getCell('I5')->getValue());
  84. self::assertEquals('=MEDIAN(B6:B8)', $sheet->getCell('B9')->getValue());
  85. self::assertEquals(11, $sheet->getCell('E1')->getStyle()->getFont()->getSize());
  86. self::assertTrue($sheet->getCell('E1')->getStyle()->getFont()->getBold());
  87. self::assertTrue($sheet->getCell('E1')->getStyle()->getFont()->getItalic());
  88. self::assertEquals(Font::UNDERLINE_SINGLE, $sheet->getCell('E1')->getStyle()->getFont()->getUnderline());
  89. self::assertFalse($sheet->getCell('E2')->getStyle()->getFont()->getBold());
  90. self::assertFalse($sheet->getCell('E2')->getStyle()->getFont()->getItalic());
  91. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('E2')->getStyle()->getFont()->getUnderline());
  92. self::assertTrue($sheet->getCell('E3')->getStyle()->getFont()->getBold());
  93. self::assertFalse($sheet->getCell('E3')->getStyle()->getFont()->getItalic());
  94. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('E3')->getStyle()->getFont()->getUnderline());
  95. self::assertFalse($sheet->getCell('E4')->getStyle()->getFont()->getBold());
  96. self::assertTrue($sheet->getCell('E4')->getStyle()->getFont()->getItalic());
  97. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('E4')->getStyle()->getFont()->getUnderline());
  98. self::assertTrue($sheet->getCell('F1')->getStyle()->getFont()->getBold());
  99. self::assertFalse($sheet->getCell('F1')->getStyle()->getFont()->getItalic());
  100. self::assertEquals(Font::UNDERLINE_SINGLE, $sheet->getCell('F1')->getStyle()->getFont()->getUnderline());
  101. self::assertFalse($sheet->getCell('F2')->getStyle()->getFont()->getBold());
  102. self::assertFalse($sheet->getCell('F2')->getStyle()->getFont()->getItalic());
  103. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F2')->getStyle()->getFont()->getUnderline());
  104. self::assertTrue($sheet->getCell('F3')->getStyle()->getFont()->getBold());
  105. self::assertTrue($sheet->getCell('F3')->getStyle()->getFont()->getItalic());
  106. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F3')->getStyle()->getFont()->getUnderline());
  107. self::assertFalse($sheet->getCell('F4')->getStyle()->getFont()->getBold());
  108. self::assertFalse($sheet->getCell('F4')->getStyle()->getFont()->getItalic());
  109. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F4')->getStyle()->getFont()->getUnderline());
  110. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C10')->getStyle()->getBorders()->getTop()->getBorderStyle());
  111. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C10')->getStyle()->getBorders()->getRight()->getBorderStyle());
  112. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C10')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  113. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C10')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  114. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C12')->getStyle()->getBorders()->getTop()->getBorderStyle());
  115. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C12')->getStyle()->getBorders()->getRight()->getBorderStyle());
  116. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C12')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  117. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C12')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  118. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C14')->getStyle()->getBorders()->getTop()->getBorderStyle());
  119. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C14')->getStyle()->getBorders()->getRight()->getBorderStyle());
  120. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C14')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  121. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C14')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  122. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C16')->getStyle()->getBorders()->getTop()->getBorderStyle());
  123. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C16')->getStyle()->getBorders()->getRight()->getBorderStyle());
  124. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C16')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  125. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C16')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  126. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C18')->getStyle()->getBorders()->getTop()->getBorderStyle());
  127. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C18')->getStyle()->getBorders()->getRight()->getBorderStyle());
  128. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C18')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  129. self::assertEquals(Border::BORDER_THIN, $sheet->getCell('C18')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  130. }
  131. public function testLoadXlsxSheet2Contents(): void
  132. {
  133. $reader = new Xlsx();
  134. $spreadsheet = $reader->load(self::$testbook);
  135. $sheet = $spreadsheet->getSheet(1);
  136. self::assertEquals('Second', $sheet->getTitle());
  137. self::assertSame('Hyperlink', $sheet->getCell('B2')->getValue());
  138. $hyper = $sheet->getCell('B2')->getHyperlink();
  139. self::assertSame('http://www.example.com/', $hyper->getUrl());
  140. self::assertSame('Comment', $sheet->getCell('B3')->getValue());
  141. $comment = $sheet->getComment('B3');
  142. // Created as "threaded comment" with Excel 365, not quite as expected.
  143. self::assertStringContainsString('This is a comment', (string) $comment);
  144. }
  145. public function testLoadXlsxSheet2Styles(): void
  146. {
  147. $reader = new Xlsx();
  148. $spreadsheet = $reader->load(self::$testbook);
  149. $sheet = $spreadsheet->getSheet(1);
  150. self::assertEquals('Second', $sheet->getTitle());
  151. //if (strpos(__FILE__, 'NonStd') !== false) {
  152. // self::markTestIncomplete('Not yet ready');
  153. //}
  154. self::assertEquals('center', $sheet->getCell('A2')->getStyle()->getAlignment()->getHorizontal());
  155. self::assertSame('inherit', $sheet->getCell('A2')->getStyle()->getProtection()->getLocked());
  156. self::assertEquals('top', $sheet->getCell('A3')->getStyle()->getAlignment()->getVertical());
  157. self::assertSame('unprotected', $sheet->getCell('A3')->getStyle()->getProtection()->getLocked());
  158. }
  159. }