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 " Nombre del alumno: " . "<b>$name</b>";
echo "<br> Nombre de acceso: " . "<b>$username</b>";
echo "<br> Dirección de correo: " . "<b>$email</b>";
echo "<br> 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.