You are here

public static function PHPExcel_Calculation_LookupRef::OFFSET in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/LookupRef.php \PHPExcel_Calculation_LookupRef::OFFSET()

* OFFSET * * Returns a reference to a range that is a specified number of rows and columns from a cell or range of cells. * The reference that is returned can be a single cell or a range of cells. You can specify the number of rows and * the number of columns to be returned. * * Excel Function: * =OFFSET(cellAddress, rows, cols, [height], [width]) * *

Parameters

cellAddress The reference from which you want to base the offset. Reference must refer to a cell or: * range of adjacent cells; otherwise, OFFSET returns the #VALUE! error value. * @param rows The number of rows, up or down, that you want the upper-left cell to refer to. * Using 5 as the rows argument specifies that the upper-left cell in the reference is * five rows below reference. Rows can be positive (which means below the starting reference) * or negative (which means above the starting reference). * @param cols The number of columns, to the left or right, that you want the upper-left cell of the result * to refer to. Using 5 as the cols argument specifies that the upper-left cell in the * reference is five columns to the right of reference. Cols can be positive (which means * to the right of the starting reference) or negative (which means to the left of the * starting reference). * @param height The height, in number of rows, that you want the returned reference to be. Height must be a positive number. * @param width The width, in number of columns, that you want the returned reference to be. Width must be a positive number. * @return string A reference to a cell or range of cells

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/LookupRef.php, line 364

Class

PHPExcel_Calculation_LookupRef
PHPExcel_Calculation_LookupRef

Code

public static function OFFSET($cellAddress = Null, $rows = 0, $columns = 0, $height = null, $width = null) {
  $rows = PHPExcel_Calculation_Functions::flattenSingleValue($rows);
  $columns = PHPExcel_Calculation_Functions::flattenSingleValue($columns);
  $height = PHPExcel_Calculation_Functions::flattenSingleValue($height);
  $width = PHPExcel_Calculation_Functions::flattenSingleValue($width);
  if ($cellAddress == Null) {
    return 0;
  }
  $args = func_get_args();
  $pCell = array_pop($args);
  if (!is_object($pCell)) {
    return PHPExcel_Calculation_Functions::REF();
  }
  $sheetName = NULL;
  if (strpos($cellAddress, "!")) {
    list($sheetName, $cellAddress) = explode("!", $cellAddress);
    $sheetName = trim($sheetName, "'");
  }
  if (strpos($cellAddress, ":")) {
    list($startCell, $endCell) = explode(":", $cellAddress);
  }
  else {
    $startCell = $endCell = $cellAddress;
  }
  list($startCellColumn, $startCellRow) = PHPExcel_Cell::coordinateFromString($startCell);
  list($endCellColumn, $endCellRow) = PHPExcel_Cell::coordinateFromString($endCell);
  $startCellRow += $rows;
  $startCellColumn = PHPExcel_Cell::columnIndexFromString($startCellColumn) - 1;
  $startCellColumn += $columns;
  if ($startCellRow <= 0 || $startCellColumn < 0) {
    return PHPExcel_Calculation_Functions::REF();
  }
  $endCellColumn = PHPExcel_Cell::columnIndexFromString($endCellColumn) - 1;
  if ($width != null && !is_object($width)) {
    $endCellColumn = $startCellColumn + $width - 1;
  }
  else {
    $endCellColumn += $columns;
  }
  $startCellColumn = PHPExcel_Cell::stringFromColumnIndex($startCellColumn);
  if ($height != null && !is_object($height)) {
    $endCellRow = $startCellRow + $height - 1;
  }
  else {
    $endCellRow += $rows;
  }
  if ($endCellRow <= 0 || $endCellColumn < 0) {
    return PHPExcel_Calculation_Functions::REF();
  }
  $endCellColumn = PHPExcel_Cell::stringFromColumnIndex($endCellColumn);
  $cellAddress = $startCellColumn . $startCellRow;
  if ($startCellColumn != $endCellColumn || $startCellRow != $endCellRow) {
    $cellAddress .= ':' . $endCellColumn . $endCellRow;
  }
  if ($sheetName !== NULL) {
    $pSheet = $pCell
      ->getWorksheet()
      ->getParent()
      ->getSheetByName($sheetName);
  }
  else {
    $pSheet = $pCell
      ->getWorksheet();
  }
  return PHPExcel_Calculation::getInstance()
    ->extractCellRange($cellAddress, $pSheet, False);
}