Tema: Desafio
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/05/2013, 20:01
Avatar de portalmana
portalmana
 
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 1 mes
Puntos: 80
Respuesta: Desafio

Mira en el foro habia dejado esto para excel :
Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL | E_STRICT);
  3.  
  4. class ColumnasExcel
  5. {
  6.     /**
  7.      * Contiene Los caracteres con los que se formaran la cadena final.
  8.      * @var string
  9.      */
  10.     private $_cadenaSalida  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  11.    
  12.     /**
  13.      * Contiene el Tamaño de la cadena de caracteres de salida.
  14.      * @var integer
  15.      */
  16.     private $_largo;
  17.    
  18.     /**
  19.      * Constructor de Clase
  20.      * @param   string  $cadenaSalida   Si se quiere una cadena distinta a las letras de Excel
  21.      *                                  Se puede Configurar aqui o con el metodo setCadenaSalida.
  22.      */
  23.     public function __construct($cadenaSalida = '')
  24.     {
  25.         if (!empty($cadenaSalida)) {
  26.             $this->_cadenaSalida = $cadenaSalida;
  27.         }
  28.         $this->_largo = strlen($this->_cadenaSalida);
  29.     }
  30.    
  31.     /**
  32.      * Configura una Nueva cadena de Salida.
  33.      * @param   string  $cadenaSalida   Configura una nueva cadena de salida.
  34.      */
  35.     public function setCadenaSalida($cadenaSalida)
  36.     {
  37.         $this->_cadenaSalida    = $cadenaSalida;
  38.         $this->_largo           = strlen($this->_cadenaSalida);
  39.     }
  40.    
  41.     /**
  42.      * Convierte un Entero a Una Cadena de Letras.
  43.      * @param   integer $numero Numero a Convertir
  44.      * @return  string
  45.      */
  46.     function getNumeroALetra($numero)
  47.     {
  48.        
  49.         $cadena = '';
  50.         do {
  51.            $entero  = (int)( $numero / $this->_largo );
  52.            $resto   = ( $numero % $this->_largo );
  53.            //$cadena  = chr(65 + $resto) . $cadena;
  54.            $cadena = substr($this->_cadenaSalida, $resto,1) . $cadena;
  55.            
  56.            $numero  = $entero - 1 ;
  57.         } while ($entero);
  58.        
  59.         return $cadena;
  60.     }
  61.    
  62.     /**
  63.      * Cantidad Maxima de letras en el resultado Final
  64.      * @param   integer $max    Maxima cantidad de caracteres del resultado
  65.      * @return  integer
  66.      */
  67.     public function tamanioMaximoCadena($max)
  68.     {
  69.         $max        = intval($max);
  70.         $resultado  = 0;
  71.        
  72.         for ($i=1; $i <= $max; $i++) {
  73.             $resultado+= bcpow($this->_largo, $i);
  74.         }
  75.        
  76.         return ($resultado - 1);
  77.     }
  78. }
  79.  
  80. // Creo una instancia del objeto
  81. $obj            = new ColumnasExcel();
  82. // Veo cuantos caracteres como maximo tenga la cadena de salida
  83. $iteraciones    = $obj->tamanioMaximoCadena(3);
  84. $inicio = $obj->tamanioMaximoCadena(2)+1;
  85. for ($i=$inicio; $i <= $iteraciones; $i++)
  86. {
  87.      echo $obj->getNumeroALetra($i) . '<br>';
  88.    
  89. }

Saludos

http://www.forosdelweb.com/f18/strin...etras-1020133/
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp