Loading src/Calc.php +21 −6 Original line number Diff line number Diff line Loading @@ -96,23 +96,38 @@ class Calc public static function cellNameToCoords(string $name): array { $coords = [ 'absRow' => false, 'absCol' => false, ]; $col = ''; $row = ''; for ($i = 0; $i < strlen($name); $i++) { $start = 0; if (str_starts_with($name, '$')){ $start = 1; $coords['absCol'] = true; } for ($i = $start; $i < strlen($name); $i++) { $chr = substr($name, $i, 1); $num = ord($chr); if ($num > 64 && $num < 65 + 26) { $col .= $chr; } else { if ($chr == '$'){ $coords['absRow'] = true; }else { $row .= $chr; } } } return [ 'col' => self::letterToNumber($col), 'row' => (int)$row, ]; $coords['col'] = self::letterToNumber($col); $coords['row'] = (int)$row; return $coords; } Loading src/Calc/Formule.php +20 −6 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Unicaen\OpenDocument\Calc; use Unicaen\OpenDocument\Calc; class Formule { private string $formule; Loading Loading @@ -210,10 +212,22 @@ class Formule if (false !== strpos($val, ':')) { $range = explode(':', $val); $begin = $range[0]; $end = substr($range[1], 1); $cBegin = Calc::cellNameToCoords($begin); $cEnd = Calc::cellNameToCoords($end); $term = [ 'type' => 'range', 'begin' => $range[0], 'end' => substr($range[1], 1), 'begin' => $begin, 'end' => $end, 'rowBegin' => $cBegin['row'], 'rowEnd' => $cEnd['row'], 'colBegin' => $cBegin['col'], 'colNamedBegin' => Calc::numberToLetter($cBegin['col']), 'colEnd' => $cEnd['col'], 'colNamedEnd' => Calc::numberToLetter($cEnd['col']), ]; } else { $term = [ Loading Loading
src/Calc.php +21 −6 Original line number Diff line number Diff line Loading @@ -96,23 +96,38 @@ class Calc public static function cellNameToCoords(string $name): array { $coords = [ 'absRow' => false, 'absCol' => false, ]; $col = ''; $row = ''; for ($i = 0; $i < strlen($name); $i++) { $start = 0; if (str_starts_with($name, '$')){ $start = 1; $coords['absCol'] = true; } for ($i = $start; $i < strlen($name); $i++) { $chr = substr($name, $i, 1); $num = ord($chr); if ($num > 64 && $num < 65 + 26) { $col .= $chr; } else { if ($chr == '$'){ $coords['absRow'] = true; }else { $row .= $chr; } } } return [ 'col' => self::letterToNumber($col), 'row' => (int)$row, ]; $coords['col'] = self::letterToNumber($col); $coords['row'] = (int)$row; return $coords; } Loading
src/Calc/Formule.php +20 −6 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Unicaen\OpenDocument\Calc; use Unicaen\OpenDocument\Calc; class Formule { private string $formule; Loading Loading @@ -210,10 +212,22 @@ class Formule if (false !== strpos($val, ':')) { $range = explode(':', $val); $begin = $range[0]; $end = substr($range[1], 1); $cBegin = Calc::cellNameToCoords($begin); $cEnd = Calc::cellNameToCoords($end); $term = [ 'type' => 'range', 'begin' => $range[0], 'end' => substr($range[1], 1), 'begin' => $begin, 'end' => $end, 'rowBegin' => $cBegin['row'], 'rowEnd' => $cEnd['row'], 'colBegin' => $cBegin['col'], 'colNamedBegin' => Calc::numberToLetter($cBegin['col']), 'colEnd' => $cEnd['col'], 'colNamedEnd' => Calc::numberToLetter($cEnd['col']), ]; } else { $term = [ Loading