OFFSET.php 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  3. require __DIR__ . '/../../Header.php';
  4. $helper->log('Returns a cell range that is a specified number of rows and columns from a cell or range of cells.');
  5. // Create new PhpSpreadsheet object
  6. $spreadsheet = new Spreadsheet();
  7. $worksheet = $spreadsheet->getActiveSheet();
  8. $data = [
  9. [null, 'Week 1', 'Week 2', 'Week 3', 'Week 4'],
  10. ['Sunday', 4500, 2200, 3800, 1500],
  11. ['Monday', 5500, 6100, 5200, 4800],
  12. ['Tuesday', 7000, 6200, 5000, 7100],
  13. ['Wednesday', 8000, 4000, 3900, 7600],
  14. ['Thursday', 5900, 5500, 6900, 7100],
  15. ['Friday', 4900, 6300, 6900, 5200],
  16. ['Saturday', 3500, 3900, 5100, 4100],
  17. ];
  18. $worksheet->fromArray($data, null, 'A3');
  19. $worksheet->getCell('H1')->setValue('=OFFSET(A3, 3, 1)');
  20. $worksheet->getCell('H2')->setValue('=SUM(OFFSET(A3, 3, 1, 1, 4))');
  21. $worksheet->getCell('H3')->setValue('=SUM(OFFSET(B3:E3, 3, 0))');
  22. $worksheet->getCell('H4')->setValue('=SUM(OFFSET(E3, 1, -3, 7))');
  23. for ($row = 1; $row <= 4; ++$row) {
  24. $cell = $worksheet->getCell("H{$row}");
  25. $helper->log("H{$row}: {$cell->getValue()} => {$cell->getCalculatedValue()}");
  26. }