PHP Int与Excel列相互转换

简单PHP将Int类型数值转换为Excel表的列名称,PHP版本推荐7.2+

注意:本文的数值起始值为0,而不是1,有其他需求的根据实际情况做相应调整后再使用。

数值转换为Excel列

/**
 * 数值转换为Excel列
 *
 * @author Wenhsing <wenhsing@qq.com>
 *
 * @param integer $num
 * @return string
 */
function int2Excel(int $num)
{
    $az = 26;
    $m = (int)($num % $az);
    $q = (int)($num / $az);
    $letter = chr(ord('A') + $m);
    if ($q > 0) {
        return int2Excel($q - 1) . $letter;
    }
    return $letter;
}

Excel列转换为数值

/**
 * Excel列转换为数值
 *
 * @author Wenhsing <wenhsing@qq.com>
 *
 * @param string $str
 * @return integer
 */
function excel2Int(string $str)
{
    $num = 0;
    $strArr = str_split($str, 1);
    $lenght = count($strArr);
    foreach ($strArr as $k => $v) {
        $num += ((ord($v) - ord('A') + 1) * pow(26, $lenght - $k - 1));
    }
    return $num - 1;
}

验证

echo excel2Int('AAC') . PHP_EOL;
echo int2Excel(704) . PHP_EOL;
posted @ 2021-01-08 14:36  Wenhsing  阅读(547)  评论(0编辑  收藏  举报