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;