<div dir="ltr"><div><div><div><div><div><div>Buenas tardes comunidad, <br><br>llevo tiempo tratando de que Alba lea archivos en Excel para agregarle funcionalidad al mismo; ya que algunos profesores llevan sus notas en listados y quieren que Alba los lea directo desde sus ficheros xls o xlsx.<br>
<br></div>Así que decidí explorar como solucion para mi necesidad usar el plugin sfPhpExcelPlugin de symfony, en mi caso tengo a Alba alojado en un server linux, así que voy a la ruta donde se encuentra:<br><br></div>cd /var/www/html/alba<br>
</div>php symfony plugin:install sfPhpExcelPlugin<br><br></div>Una vez instalado usamos las clases del plugin para crear el lector de Excel. ( Dejo ejemplo donde uso una planilla existente como formato, escribo los datos en la planilla desde la base de datos y genero la exportación del Excel usando los headers ). El codigo es el siguiente:<br>
<br><span style="color:rgb(0,0,255)">public function executeExport($request){<br> $division_id = $request->getParameter('division');<br> $periodo_id = $request->getParameter('periodo');<br>
$this->aAlumno = $this->getAlumnos($division_id);<br><br> $division = DivisionPeer::retrieveByPk($division_id);<br> $anio = AnioPeer::retrieveByPk($division->getFkAnioId());<br> $periodo = PeriodoPeer::retrieveByPk($periodo_id);<br>
<br><br> $inputFileType = 'Excel2007';<br> $inputFileName = '/var/www/html/alba/web/uploads/informes/planilla.xlsx';<br><br> /** Create a new Reader of the type defined in $inputFileType **/<br>
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);<br> $objPHPExcel->setActiveSheetIndex(0);<br> $j=13;<br> $objPHPExcel->getActiveSheet()->setCellValue('M7', "Periodo: ".$periodo->getDescripcion());<br>
$objPHPExcel->getActiveSheet()->setCellValue('D8', $anio->getDescripcion());<br> $objPHPExcel->getActiveSheet()->setCellValue('F9', $division->getDescripcion());<br> $objPHPExcel->getActiveSheet()->setCellValue('L8', $this->getUser()->getAttribute('usuario'));<br>
$objPHPExcel->getActiveSheet()->setCellValue('L9', $this->getUser()->getAttribute('usuario'));<br> $x=0;<br> foreach($this->aAlumno as $alumno){<br> $objPHPExcel->getActiveSheet()->setCellValue('B'.$j, $x+1);<br>
$objPHPExcel->getActiveSheet()->setCellValue('C'.$j, $alumno->getNroDocumento());<br> $objPHPExcel->getActiveSheet()->setCellValue('D'.$j, $alumno->getApellido()." ".$alumno->getApellidoMaterno()." ".$alumno->getNombre());<br>
$j++;<br> $x++;<br> }<br><br> header('Pragma: public');<br> header('Expires: 0');<br> header('Cache-Control: must-revalidate, post-check=0, pre-check=0');<br>
header('Content-Type: application/vnd.ms-excel');<br> header('Content-Disposition: attachment;filename="planilla_'.$division->getDescripcion()."_".$id_asignatura."_".$periodo->getDescripcion().'.xlsx"');<br>
header('Content-Transfer-Encoding: binary'); <br><br> $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$inputFileType); <br> $objWriter->setOffice2003Compatibility(true); <br> $objWriter->save('php://output');<br>
return sfView::NONE;<br> } </span><br><br></div>Espero les sirva para sus aplicaciones, adicional tengo varios cambios que estoy tratando de documentar para hacerlos de su conocimiento.<br><br></div>Sin más un saludo para todos.<br>
</div>