Gracias Oscar por compartir tu desarrollo del Proyecto Alba. En fin, que decir ! ... en días como hoy nos reafirmamos en lo que hacemos y en como tratamos de hacer (software libre) , ¿no creen? Creo que Alberto y el resto de la comunidad educativa de la Escuela los Arrayanes de Rosario, (entre otras!), van a poder así disfrutar de dicha funcionalidad que estaban necesitando. ... y por sistematizar la incorporación del código aportado al código base del Proyecto Alba, se me ocurre que podriamos : https://github.com/proyectoalba/alba/issues/36 ...y, Oscar, teniendo como tienes ya tu cuenta en *Github*... el repositorio de trabajo que recién empezamos a usar en comunidad del Proyecto Alba, siguiendo paso a paso las indicaciones que nos dan los simpáticos githubbers acá <https://help.github.com/articles/fork-a-repo>¿te animas a que coordinemos un *merge* de tu valiosísimo *fork* para poder incorporarlo a la nueva versión 1.2 que estamos por lanzar?¿alguien más quiere sumarse y entre todos le ponemos así la guinda al pastel? Ja,JA!! saludos libres El 13 de junio de 2013 20:24, Oscar Pardo <[email protected]>escribió:
Buenas tardes comunidad,
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.
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:
cd /var/www/html/alba php symfony plugin:install sfPhpExcelPlugin
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:
public function executeExport($request){ $division_id = $request->getParameter('division'); $periodo_id = $request->getParameter('periodo'); $this->aAlumno = $this->getAlumnos($division_id);
$division = DivisionPeer::retrieveByPk($division_id); $anio = AnioPeer::retrieveByPk($division->getFkAnioId()); $periodo = PeriodoPeer::retrieveByPk($periodo_id);
$inputFileType = 'Excel2007'; $inputFileName = '/var/www/html/alba/web/uploads/informes/planilla.xlsx';
/** Create a new Reader of the type defined in $inputFileType **/ $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); $objPHPExcel->setActiveSheetIndex(0); $j=13; $objPHPExcel->getActiveSheet()->setCellValue('M7', "Periodo: ".$periodo->getDescripcion()); $objPHPExcel->getActiveSheet()->setCellValue('D8', $anio->getDescripcion()); $objPHPExcel->getActiveSheet()->setCellValue('F9', $division->getDescripcion()); $objPHPExcel->getActiveSheet()->setCellValue('L8', $this->getUser()->getAttribute('usuario')); $objPHPExcel->getActiveSheet()->setCellValue('L9', $this->getUser()->getAttribute('usuario')); $x=0; foreach($this->aAlumno as $alumno){ $objPHPExcel->getActiveSheet()->setCellValue('B'.$j, $x+1); $objPHPExcel->getActiveSheet()->setCellValue('C'.$j, $alumno->getNroDocumento()); $objPHPExcel->getActiveSheet()->setCellValue('D'.$j, $alumno->getApellido()." ".$alumno->getApellidoMaterno()." ".$alumno->getNombre()); $j++; $x++; }
header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="planilla_'.$division->getDescripcion()."_".$id_asignatura."_".$periodo->getDescripcion().'.xlsx"'); header('Content-Transfer-Encoding: binary');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$inputFileType); $objWriter->setOffice2003Compatibility(true); $objWriter->save('php://output'); return sfView::NONE; }
Espero les sirva para sus aplicaciones, adicional tengo varios cambios que estoy tratando de documentar para hacerlos de su conocimiento.
Sin más un saludo para todos.
_______________________________________________ Alba-usuario mailing list [email protected] https://lists.ourproject.org/cgi-bin/mailman/listinfo/alba-usuario
-- *Jordi* Puedes también encontrarme en : http://identi.ca/jordilopezamat twitter : @jordilopezamat skype : llopis73 celular: 1121679084 ( ͡° ͜ʖ ͡°)