直接上代码:
class Tool{public function numToExcelLetter($num){//由于大写字母只有26个,所以基数为26$base = 26;$result = '';while ($num > 0) {$mod = (int)($num % $base);$num = (int)($num / $base);if ($mod == 0) {$num -= 1;$temp = $this->numToLetter($base) . $result;} elseif ($num == 0) {$temp = $this->numToLetter($mod) . $result;} else {$temp = $this->numToLetter($mod) . $result;}$result = $temp;}return $result;}public function numToLetter($num){if ($num == 0) {return '';}$num = (int)$num - 1;//获取A的ascii码$ordA = ord('A');return chr($ordA + $num);}}class Tool { public function numToExcelLetter($num) { //由于大写字母只有26个,所以基数为26 $base = 26; $result = ''; while ($num > 0) { $mod = (int)($num % $base); $num = (int)($num / $base); if ($mod == 0) { $num -= 1; $temp = $this->numToLetter($base) . $result; } elseif ($num == 0) { $temp = $this->numToLetter($mod) . $result; } else { $temp = $this->numToLetter($mod) . $result; } $result = $temp; } return $result; } public function numToLetter($num) { if ($num == 0) { return ''; } $num = (int)$num - 1; //获取A的ascii码 $ordA = ord('A'); return chr($ordA + $num); } }
调用
$tool = new Tool();$tool->numToExcelLetter(26);$tool = new Tool(); $tool->numToExcelLetter(26);
RoveCoder版权所有,转载请注明