Как получить координаты в формате Excel из числового вида

Допустим, нам надо представить ячейку с координатами (5,4) в Excel-формате, т.е. как “E4”. Либо (27,3) как “AA3”. Эту задачу легко выполнить, если представить буквенный формат таблицы Excel в виде 26ричной системы счисления, состоящей из букв.

Т.е., нам потребуется словарь, мы можем представить его одной алфавитной строкой, и собственно, сам алгоритм, который несложен сам по себе.

Для того, чтобы получать правильные координаты ячейки Excel, будем использовать начало координат не (0,0), а (1,1), как в экселе.

Получился такой вот код:


function getExcelCell($x,$y) {
    if (($x < 1) || ($y < 1)) { return False; }
    $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $excelX = '';
    while ($x > 0) {
        $r = $x % 26;
        $x = (int)($x / 26);
        if ($r == 0) {
            $r = 26; $x = $x - 1;
        }
        $excelX = $alphabet[$r-1] . $excelX;
    }
    $excelCell = $excelX . $y;
    return $excelCell;
}

// Тест

for ($i = -10; $i < 1500; $i++) {
    $res = getExcelCell($i,$i);
    if ($res) {
        echo $res . "<br>";
    } else {
        echo 'Значение (' . $i . ', ' . $i . ') не может быть обработано!<br>';
    }
}

Как видите, в случае, если передаются отрицательные значения (или 0) в $x или $y, то функция возвращает False.

php