Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2012, 04:42
El_LoBooo
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 10 meses
Puntos: 0
Problema con PHPExcel (clase Excel2007)

Hola a todos.

Estoy trabajando con php y la librería de PHPExcel. Llevo unos días atascado en un par de cosas que no soy capaz de solventar.

Este es el código:

Código PHP:
<?php
include("/../prueba.php");  
/* Obtenemos datos del usuario de Joomla */
$user JFactory::getUser();
$id $user->id;
$name $user->name;
$username $user->username;
$email $user->email;
/* Incluimos la ruta */
set_include_path(get_include_path() . PATH_SEPARATOR './Classes/');
/* Obtenemos la clase para archivos .xlsx */
require_once('PHPExcel/IOFactory.php');
set_time_limit(0);
ini_set('memory_limit','64M');
$objReader PHPExcel_IOFactory::createReader('Excel2007');
/* Nombre del archivo .xlsx */
$nombre_archivo="notas.xlsx";
$objPHPExcel $objReader->load($nombre_archivo);
/* Inicializamos las variables de columnas y filas */
$col 0;
$row 0;
/* Obtenemos el numero maximo de filas y columnas */
$highestRow $objPHPExcel->getActiveSheet()->getHighestRow();
$highestColumn $objPHPExcel->getActiveSheet()->getHighestColumn();
/* Comprobamos que el ID de usuario existe en la hoja de calculo */
    
for ($row 0$row <= $highestRow$row++) {
        
$usuario $objPHPExcel->getActiveSheet()->getCell('A'.$row)->getValue();
        if (
$id == $usuario) {
            
$expediente $objPHPExcel->getActiveSheet()->getCell('B'.$row)->getValue();
            echo 
"<h2>Notas</h2>";
            echo 
"&nbsp;&nbsp;&nbsp;Nombre del alumno: " "<b>$name</b>";
            echo 
"<br>&nbsp;&nbsp;&nbsp;Nombre de acceso: " "<b>$username</b>";
            echo 
"<br>&nbsp;&nbsp;&nbsp;Dirección de correo: " "<b>$email</b>";
            echo 
"<br>&nbsp;&nbsp;&nbsp;Número de expediente: " "<b>$expediente</b>";
            
$col 2;?>
            <div align="center"><br>
                    <table align="center">
                        <tr align="center">
                        <?php
            
for ($col 2$col <= [B]$highestColumn[/B]; $col++) {
                
$notas $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,$row)->getValue(); 
                
$materias $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,0)->getValue();?>
                            
                            <th width="75"><?php echo $materias ?></th>
                            <td width="75"><?php echo $notas ?></td>
                        <?php }?>
                        </tr>
                    </table>
                </div><?php
        
}
    }
Los problemas que tengo son:

1- En el segundo for, donde hago la pasada por las columnas. Si utilizo la variable $highestColumn (que creo que está bien definida) no entra nunca en el for, cuando el valor que me devuelve ésa variable es 'J'. Supongo que tiene algo que ver conque $col devuelve un entero y ésa variable un carácter pero no soy capaz de encontrar la solución.

2- Dentro del bucle for necesito que me muestre la primera fila con todas las columnas:

Código PHP:
$materias $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,0)->getValue(); 
Sin embargo no obtengo dato alguno. He probado con getCellByColumnAndRow($col,'0'), getCell($col.0) y otras posibilidades sin conseguirlo, siempre obtengo celda vacía, cuando la fila 0 de mi archivo .xlsx tiene los nombres de las asignaturas de cada alumno (historia, matemáticas, etc).
Si por ejemplo logueo a la página con un usuario que se encuentra en mi archivo en la fila '2' y pongo lo siguiente:

Código PHP:
$materias $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,$row-2)->getValue(); 
Si me dá los nombres de las asignaturas, pero obviamente ése código no me vale.

Espero haberme explicado bien y podáis guiarme como llevarlo a cabo.

Un saludo.