<?php
print_r ( generateExcelColumns
( 2 , 30 ) ) ; function generateExcelColumns( $start = 1 , $end = 28 ) {
if ( $start < 1 ) $start = 1 ;
if ( $end < $start ) $end = $start ;
$columns = [ ] ;
for ( $i = $start ; $i <= $end ; $i ++ ) {
$column = '' ;
$num = $i ;
// 將數字轉成 26 進位字母(類似 base-26,但 Excel 沒有 0,所以 A=1)
while ( $num > 0 ) {
$remainder = ( $num - 1 ) % 26 ; // 關鍵:減 1 讓餘數從 0~25 對應 A~Z
$column = chr ( 65 + $remainder ) . $column ; $num = intval ( ( $num - 1 ) / 26 ) ; // 繼續處理更高位 }
$columns [ ] = $column ;
}
return $columns ;
}
PD9waHAKCnByaW50X3IoZ2VuZXJhdGVFeGNlbENvbHVtbnMoMiwzMCkpOwpmdW5jdGlvbiBnZW5lcmF0ZUV4Y2VsQ29sdW1ucygkc3RhcnQgPSAxLCAkZW5kID0gMjgpIHsKICAgIGlmICgkc3RhcnQgPCAxKSAkc3RhcnQgPSAxOwogICAgaWYgKCRlbmQgPCAkc3RhcnQpICRlbmQgPSAkc3RhcnQ7CgogICAgJGNvbHVtbnMgPSBbXTsKCiAgICBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKSB7CiAgICAgICAgJGNvbHVtbiA9ICcnOwogICAgICAgICRudW0gPSAkaTsKCiAgICAgICAgLy8g5bCH5pW45a2X6L2J5oiQIDI2IOmAsuS9jeWtl+avje+8iOmhnuS8vCBiYXNlLTI277yM5L2GIEV4Y2VsIOaykuaciSAw77yM5omA5LulIEE9Me+8iQogICAgICAgIHdoaWxlICgkbnVtID4gMCkgewogICAgICAgICAgICAkcmVtYWluZGVyID0gKCRudW0gLSAxKSAlIDI2OyAgICAgICAgLy8g6Zec6Y2177ya5ribIDEg6K6T6aSY5pW45b6eIDB+MjUg5bCN5oeJIEF+WgogICAgICAgICAgICAkY29sdW1uID0gY2hyKDY1ICsgJHJlbWFpbmRlcikgLiAkY29sdW1uOwogICAgICAgICAgICAkbnVtID0gaW50dmFsKCgkbnVtIC0gMSkgLyAyNik7ICAgICAgLy8g57m857qM6JmV55CG5pu06auY5L2NCiAgICAgICAgfQoKICAgICAgICAkY29sdW1uc1tdID0gJGNvbHVtbjsKICAgIH0KCiAgICByZXR1cm4gJGNvbHVtbnM7Cn0=