NamespaceOpenpyxl35Test.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
  4. use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
  5. class NamespaceOpenpyxl35Test extends \PHPUnit\Framework\TestCase
  6. {
  7. /**
  8. * @var string
  9. */
  10. private static $testbook = 'tests/data/Reader/XLSX/namespaces.openpyxl35.xlsx';
  11. public function testPreliminaries(): void
  12. {
  13. $file = 'zip://';
  14. $file .= self::$testbook;
  15. $file .= '#xl/workbook.xml';
  16. $data = file_get_contents($file);
  17. // confirm that file contains expected namespaced xml tag
  18. if ($data === false) {
  19. self::fail('Unable to read file');
  20. } else {
  21. self::assertStringContainsString('<s:workbook ', $data);
  22. }
  23. }
  24. public function testInfo(): void
  25. {
  26. $reader = new Xlsx();
  27. $workSheetInfo = $reader->listWorkSheetInfo(self::$testbook);
  28. $info0 = $workSheetInfo[0];
  29. self::assertEquals('Shofar 5781', $info0['worksheetName']);
  30. self::assertEquals('D', $info0['lastColumnLetter']);
  31. self::assertEquals(3, $info0['lastColumnIndex']);
  32. self::assertEquals(30, $info0['totalRows']);
  33. self::assertEquals(4, $info0['totalColumns']);
  34. }
  35. public function testSheetNames(): void
  36. {
  37. $reader = new Xlsx();
  38. $worksheetNames = $reader->listWorksheetNames(self::$testbook);
  39. self::assertEquals(['Shofar 5781', 'Shofar 5782', 'Shofar 5783'], $worksheetNames);
  40. }
  41. public function testActive(): void
  42. {
  43. $reader = new Xlsx();
  44. $spreadsheet = $reader->load(self::$testbook);
  45. $sheet = $spreadsheet->getActiveSheet();
  46. self::assertSame('Shofar 5781', $sheet->getTitle());
  47. self::assertSame('A2', $sheet->getFreezePane());
  48. self::assertSame('A2', $sheet->getTopLeftCell());
  49. self::assertSame('D2', $sheet->getSelectedCells());
  50. $spreadsheet->disconnectWorksheets();
  51. }
  52. private static function getCellValue(Worksheet $sheet, string $cell): string
  53. {
  54. $result = $sheet->getCell($cell)->getValue();
  55. if (is_scalar($result) || (is_object($result) && method_exists($result, '__toString'))) {
  56. return (string) $result;
  57. }
  58. return '';
  59. }
  60. public function testLoadXlsx(): void
  61. {
  62. $reader = new Xlsx();
  63. $spreadsheet = $reader->load(self::$testbook);
  64. $sheet = $spreadsheet->getSheet(0);
  65. self::assertEquals('Shofar 5781', $sheet->getTitle());
  66. $expectedArray = [
  67. 'Shofar 5781' => [
  68. 'A1' => 'Weekday',
  69. 'B6' => 'August 13',
  70. 'A14' => 'Saturday',
  71. 'C14' => 'Elul 13',
  72. 'D30' => 'N/A',
  73. 'B30' => 'September 6',
  74. ],
  75. 'Shofar 5782' => [
  76. 'C1' => 'Jewish Date',
  77. 'B6' => 'September 1',
  78. 'A14' => 'Friday',
  79. 'C14' => 'Elul 13',
  80. 'D28' => '',
  81. 'B30' => 'September 25',
  82. ],
  83. 'Shofar 5783' => [
  84. 'B1' => 'Civil Date',
  85. 'B6' => 'August 22',
  86. 'A14' => 'Wednesday',
  87. 'C14' => 'Elul 13',
  88. 'D30' => 'N/A',
  89. 'B30' => 'September 15',
  90. ],
  91. ];
  92. foreach ($expectedArray as $sheetName => $array1) {
  93. $sheet = $spreadsheet->getSheetByNameOrThrow($sheetName);
  94. foreach ($array1 as $key => $value) {
  95. self::assertSame($value, self::getCellValue($sheet, $key), "error in sheet $sheetName cell $key");
  96. }
  97. }
  98. $spreadsheet->disconnectWorksheets();
  99. }
  100. }