WorkbookViewAttributesTest.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Functional;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. class WorkbookViewAttributesTest extends AbstractFunctional
  5. {
  6. public function providerFormats(): array
  7. {
  8. return [
  9. ['Xlsx'],
  10. ];
  11. }
  12. /**
  13. * Test that workbook bookview attributes such as 'showSheetTabs',
  14. * (the attribute controlling worksheet tabs visibility,)
  15. * are preserved when xlsx documents are read and written.
  16. *
  17. * @see https://github.com/PHPOffice/PhpSpreadsheet/issues/523
  18. *
  19. * @dataProvider providerFormats
  20. *
  21. * @param string $format
  22. */
  23. public function testPreserveWorkbookViewAttributes($format): void
  24. {
  25. // Create a dummy workbook with two worksheets
  26. $workbook = new Spreadsheet();
  27. $worksheet1 = $workbook->getActiveSheet();
  28. $worksheet1->setTitle('Tweedledee');
  29. $worksheet1->setCellValue('A1', 1);
  30. $worksheet2 = $workbook->createSheet();
  31. $worksheet2->setTitle('Tweeldedum');
  32. $worksheet2->setCellValue('A1', 2);
  33. // Check that the bookview attributes return default values
  34. self::assertTrue($workbook->getShowHorizontalScroll());
  35. self::assertTrue($workbook->getShowVerticalScroll());
  36. self::assertTrue($workbook->getShowSheetTabs());
  37. self::assertTrue($workbook->getAutoFilterDateGrouping());
  38. self::assertFalse($workbook->getMinimized());
  39. self::assertSame(0, $workbook->getFirstSheetIndex());
  40. self::assertSame(600, $workbook->getTabRatio());
  41. self::assertSame(Spreadsheet::VISIBILITY_VISIBLE, $workbook->getVisibility());
  42. // Set the bookview attributes to non-default values
  43. $workbook->setShowHorizontalScroll(false);
  44. $workbook->setShowVerticalScroll(false);
  45. $workbook->setShowSheetTabs(false);
  46. $workbook->setAutoFilterDateGrouping(false);
  47. $workbook->setMinimized(true);
  48. $workbook->setFirstSheetIndex(1);
  49. $workbook->setTabRatio(700);
  50. $workbook->setVisibility(Spreadsheet::VISIBILITY_HIDDEN);
  51. // Check that bookview attributes were set properly
  52. self::assertFalse($workbook->getShowHorizontalScroll());
  53. self::assertFalse($workbook->getShowVerticalScroll());
  54. self::assertFalse($workbook->getShowSheetTabs());
  55. self::assertFalse($workbook->getAutoFilterDateGrouping());
  56. self::assertTrue($workbook->getMinimized());
  57. self::assertSame(1, $workbook->getFirstSheetIndex());
  58. self::assertSame(700, $workbook->getTabRatio());
  59. self::assertSame(Spreadsheet::VISIBILITY_HIDDEN, $workbook->getVisibility());
  60. $workbook2 = $this->writeAndReload($workbook, $format);
  61. // Check that the read spreadsheet has the right bookview attributes
  62. self::assertFalse($workbook2->getShowHorizontalScroll());
  63. self::assertFalse($workbook2->getShowVerticalScroll());
  64. self::assertFalse($workbook2->getShowSheetTabs());
  65. self::assertFalse($workbook2->getAutoFilterDateGrouping());
  66. self::assertTrue($workbook2->getMinimized());
  67. self::assertSame(1, $workbook2->getFirstSheetIndex());
  68. self::assertSame(700, $workbook2->getTabRatio());
  69. self::assertSame(Spreadsheet::VISIBILITY_HIDDEN, $workbook2->getVisibility());
  70. }
  71. }