Differences Between: [Versions 310 and 311] [Versions 39 and 311]
1 <?php 2 3 namespace Box\Spout\Writer\Common\Helper; 4 5 /** 6 * Class CellHelper 7 * This class provides helper functions when working with cells 8 */ 9 class CellHelper 10 { 11 /** @var array Cache containing the mapping column index => column letters */ 12 private static $columnIndexToColumnLettersCache = []; 13 14 /** 15 * Returns the column letters (base 26) associated to the base 10 column index. 16 * Excel uses A to Z letters for column indexing, where A is the 1st column, 17 * Z is the 26th and AA is the 27th. 18 * The mapping is zero based, so that 0 maps to A, B maps to 1, Z to 25 and AA to 26. 19 * 20 * @param int $columnIndexZeroBased The Excel column index (0, 42, ...) 21 * 22 * @return string The associated cell index ('A', 'BC', ...) 23 */ 24 public static function getColumnLettersFromColumnIndex($columnIndexZeroBased) 25 { 26 $originalColumnIndex = $columnIndexZeroBased; 27 28 // Using isset here because it is way faster than array_key_exists... 29 if (!isset(self::$columnIndexToColumnLettersCache[$originalColumnIndex])) { 30 $columnLetters = ''; 31 $capitalAAsciiValue = \ord('A'); 32 33 do { 34 $modulus = $columnIndexZeroBased % 26; 35 $columnLetters = \chr($capitalAAsciiValue + $modulus) . $columnLetters; 36 37 // substracting 1 because it's zero-based 38 $columnIndexZeroBased = (int) ($columnIndexZeroBased / 26) - 1; 39 } while ($columnIndexZeroBased >= 0); 40 41 self::$columnIndexToColumnLettersCache[$originalColumnIndex] = $columnLetters; 42 } 43 44 return self::$columnIndexToColumnLettersCache[$originalColumnIndex]; 45 } 46 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body