RetainSelectedCellsTest.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  5. class RetainSelectedCellsTest extends AbstractFunctional
  6. {
  7. public function providerFormats(): array
  8. {
  9. return [
  10. ['Xls'],
  11. ['Xlsx'],
  12. ['Ods'],
  13. ['Csv'],
  14. ['Html'],
  15. ];
  16. }
  17. /**
  18. * Test selected cell is retained in memory and in file written to disk.
  19. *
  20. * @dataProvider providerFormats
  21. */
  22. public function testRetainSelectedCells(string $format): void
  23. {
  24. $spreadsheet = new Spreadsheet();
  25. $sheet = $spreadsheet->getActiveSheet();
  26. $sheet->setCellValue('A1', '=SIN(1)')
  27. ->setCellValue('A2', '=SIN(2)')
  28. ->setCellValue('A3', '=SIN(3)')
  29. ->setCellValue('B1', '=SIN(4)')
  30. ->setCellValue('B2', '=SIN(5)')
  31. ->setCellValue('B3', '=SIN(6)')
  32. ->setCellValue('C1', '=SIN(7)')
  33. ->setCellValue('C2', '=SIN(8)')
  34. ->setCellValue('C3', '=SIN(9)');
  35. $sheet->setSelectedCell('A3');
  36. $sheet = $spreadsheet->createSheet();
  37. $sheet->setCellValue('A1', '=SIN(1)')
  38. ->setCellValue('A2', '=SIN(2)')
  39. ->setCellValue('A3', '=SIN(3)')
  40. ->setCellValue('B1', '=SIN(4)')
  41. ->setCellValue('B2', '=SIN(5)')
  42. ->setCellValue('B3', '=SIN(6)')
  43. ->setCellValue('C1', '=SIN(7)')
  44. ->setCellValue('C2', '=SIN(8)')
  45. ->setCellValue('C3', '=SIN(9)');
  46. $sheet->setSelectedCell('B1');
  47. $sheet = $spreadsheet->createSheet();
  48. $sheet->setCellValue('A1', '=SIN(1)')
  49. ->setCellValue('A2', '=SIN(2)')
  50. ->setCellValue('A3', '=SIN(3)')
  51. ->setCellValue('B1', '=SIN(4)')
  52. ->setCellValue('B2', '=SIN(5)')
  53. ->setCellValue('B3', '=SIN(6)')
  54. ->setCellValue('C1', '=SIN(7)')
  55. ->setCellValue('C2', '=SIN(8)')
  56. ->setCellValue('C3', '=SIN(9)');
  57. $sheet->setSelectedCell('C2');
  58. $spreadsheet->setActiveSheetIndex(1);
  59. $reloaded = $this->writeAndReload($spreadsheet, $format);
  60. self::assertEquals('A3', $spreadsheet->getSheet(0)->getSelectedCells());
  61. self::assertEquals('B1', $spreadsheet->getSheet(1)->getSelectedCells());
  62. self::assertEquals('C2', $spreadsheet->getSheet(2)->getSelectedCells());
  63. self::assertEquals(1, $spreadsheet->getActiveSheetIndex());
  64. // SelectedCells and ActiveSheet don't make sense for Html, Csv.
  65. if ($format === 'Xlsx' || $format === 'Xls' || $format === 'Ods') {
  66. self::assertEquals('A3', $reloaded->getSheet(0)->getSelectedCells());
  67. self::assertEquals('B1', $reloaded->getSheet(1)->getSelectedCells());
  68. self::assertEquals('C2', $reloaded->getSheet(2)->getSelectedCells());
  69. self::assertEquals(1, $reloaded->getActiveSheetIndex());
  70. }
  71. }
  72. }