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.
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 ( ͡° ͜ʖ ͡°)
participants (2)
-
Jordi López -
Oscar Pardo