Issue2501Test.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. use PHPUnit\Framework\TestCase;
  5. class Issue2501Test extends TestCase
  6. {
  7. /**
  8. * @var string
  9. */
  10. private static $testbook = 'tests/data/Reader/XLSX/issue.2501.b.xlsx';
  11. public function testPreliminaries(): void
  12. {
  13. $file = 'zip://';
  14. $file .= self::$testbook;
  15. $file .= '#xl/worksheets/sheet1.xml';
  16. $data = file_get_contents($file);
  17. // confirm that file contains expected merge ranges
  18. if ($data === false) {
  19. self::fail('Unable to read file');
  20. } else {
  21. self::assertStringContainsString('<mergeCells count="3"><mergeCell ref="A:A"/><mergeCell ref="B:D"/><mergeCell ref="E2:E4"/></mergeCells>', $data);
  22. }
  23. $file = 'zip://';
  24. $file .= self::$testbook;
  25. $file .= '#xl/worksheets/sheet2.xml';
  26. $data = file_get_contents($file);
  27. // confirm that file contains expected merged ranges
  28. if ($data === false) {
  29. self::fail('Unable to read file');
  30. } else {
  31. self::assertStringContainsString('<mergeCells count="3"><mergeCell ref="1:1"/><mergeCell ref="2:4"/><mergeCell ref="B5:D5"/></mergeCells>', $data);
  32. }
  33. }
  34. public function testIssue2501(): void
  35. {
  36. // Merged cell range specified as 1:1"
  37. $filename = self::$testbook;
  38. $reader = IOFactory::createReader('Xlsx');
  39. $spreadsheet = $reader->load($filename);
  40. $sheet = $spreadsheet->getSheetByNameOrThrow('Columns');
  41. $expected = [
  42. 'A1:A1048576',
  43. 'B1:D1048576',
  44. 'E2:E4',
  45. ];
  46. self::assertSame($expected, array_values($sheet->getMergeCells()));
  47. $sheet = $spreadsheet->getSheetByNameOrThrow('Rows');
  48. $expected = [
  49. 'A1:XFD1',
  50. 'A2:XFD4',
  51. 'B5:D5',
  52. ];
  53. self::assertSame($expected, array_values($sheet->getMergeCells()));
  54. $spreadsheet->disconnectWorksheets();
  55. }
  56. }