[Alba-usuario] Exportar o cargar listados en Excel
Oscar Pardo
oscar.pardo1920 en gmail.com
Vie Jun 14 01:24:12 CEST 2013
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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://lists.ourproject.org/pipermail/alba-usuario/attachments/20130613/31e2dda1/attachment.htm
Más información sobre la lista de distribución Alba-usuario