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

Gracias rjulio21.

Conseguí arreglar ése punto con tu ayuda, cosa que te agradezco. Tenías razón, las filas empiezan desde 1. No hacía falta siquiera el "if", sólo getCellByColumnAndRow($col,1).

He arreglado varias cosas, entre ellas la creación de la tabla que lo hacía con html y estaba mal estructurada. El código PHP que tengo ahora es el siguiente:

Código PHP:
<?php
include("/homepages/42/d413216804/htdocs/calderondelabarca/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();
            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>";
/* Comprobamos que el ID de usuario existe en la hoja de calculo */    
$cont = -1;                
    for (
$row 0$row <= $highestRow$row++) {
        
$usuario $objPHPExcel->getActiveSheet()->getCell('A'.$row)->getValue();
        
        if (
$id == $usuario) {
            
$expediente $objPHPExcel->getActiveSheet()->getCell('B'.$row)->getValue();
            echo 
"<br>&nbsp;&nbsp;&nbsp;Número de expediente: " "<b>$expediente</b>";
            
$col 2;
            
$table "<div align='center'><br>";
            
$table .= "<table>";
            
$table .= "<tr align='center'>";
            for (
$col 2$col <= 10$col++) { 
                
$materias $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,1)->getValue();
                
$table .= "<th width='75'>$materias</th>";                    
            }
            
$table .= "<tr align='center'>";
            for (
$col 2$col <= 10$col++) {    
                
$notas $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,$row)->getValue();         
                
$table .= "<td width='75'>$notas</td>";
            }
            
$table .= "<tr>";
        }        
    }
        if (
$id != $usuario) {
                
$table1 "<div align='center'><br>";
                
$table1 .= "<table>";
                
$table1 .= "<tr align='center'>";
                
$table1 .= "<th width='400'>No hay notas disponibles</th>";
                
$table1 .= "</tr>";
                
$table1 .= "</table>";
                
$table1 .= "</div>";
                echo 
$table1;
        }
    
    
$table .= "</tr>";
    
$table .= "</table>";
    
$table .= "</div>";
echo 
$table;

?>
Me gustaría no tener que dar un número entero de columnas, sino que lo cogiera a través de getHighestColumn();. Sin embargo si pongo:

Código PHP:
for ($col 2$col <=$ highestColumn $col++) { 
no me lo coge y no sé como debería hacerlo, ni siquiera he conseguido encontrar información al respecto.

Otra cosa importante es el control que trato de hacer para que si el usuario logueado no se encuentra en el archivo .xlsx muestre un mensaje que en este caso lo muestro en tabla:

Código PHP:
if ($id != $usuario) {
                
$table1 "<div align='center'><br>";
                
$table1 .= "<table>";
                
$table1 .= "<tr align='center'>";
                
$table1 .= "<th width='400'>No hay notas disponibles</th>";
                
$table1 .= "</tr>";
                
$table1 .= "</table>";
                
$table1 .= "</div>";
                echo 
$table1;

Pero que ocurre, que al hacer el bucle las pasadas por la columna 'A', en el momento que llega a un usuario que no corresponda con el id del usuario logueado me salta el mensaje y he probado y probado y no encuentro la forma adecuada de hacerlo. A ver si alguien me ilumina.

Un saludo.