2017-03-16 137 views
0

使用PHP,如何將Excel樣式列名稱(如「CF」)轉換爲數字(CF = 84)? 這個問題特別適用於PHP。請不要用不同的語言來回答這個問題。在PHP中,如何將Excel樣式列名轉換爲數字?

+2

欺騙:http://stackoverflow.com/questions/5554369/php-how-to-output-list-like-this-aa-ab-ac-all-the-way-to-zzzy- zzzz-zzzza – nogad

+0

可能的重複[Excel專欄名稱列名](http://stackoverflow.com/questions/10106465/excel-column-number-from-column-name) – MarianD

+0

@nogad,可能但是當我在搜索對於解決方案,我沒有發現這個問題,因爲它是針對不同的實用程序。 – azBrian

回答

0

試試這些功能。

/** 
* Convert Excel style column names into numbers. 
* @param string $column Excel style column name like AA or CF 
* @return integer Number with A being 1 and AA being 27 
*/ 

function alpha2num($column) { 
    $number = 0; 
    foreach(str_split($column) as $letter){ 
     $number = ($number * 26) + (ord(strtolower($letter)) - 96); 
    } 
    return $number; 
} 

/** 
* Access array value with Excel style column name. 
* @param array $array The array to access 
* @param string $column Excel style column name like AA or CF 
* @return mixed Value found at the column 
*/ 
function alpha_col($array, $column){ 
    $i = alpha2num($column) - 1; 
    return isset($array[$i]) ? $array[$i] : false; 
} 
+1

[PHPExcel有點不同,如果你有興趣。](https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Classes/PHPExcel/Cell.php#L790) –

+0

我看到了,但對我來說它看起來像一個骯髒的方法,雖然強大。 – azBrian

+1

我只是覺得你可能對他們對'ord'和'strtolower'性能影響的一些觀察感興趣。我同意你的方式看起來更整潔。 –