<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-&gt;getParameter(&#39;division&#39;);<br>        $periodo_id = $request-&gt;getParameter(&#39;periodo&#39;);<br>
        $this-&gt;aAlumno = $this-&gt;getAlumnos($division_id);<br><br>        $division = DivisionPeer::retrieveByPk($division_id);<br>        $anio = AnioPeer::retrieveByPk($division-&gt;getFkAnioId());<br>        $periodo = PeriodoPeer::retrieveByPk($periodo_id);<br>
       <br><br>         $inputFileType = &#39;Excel2007&#39;;<br>        $inputFileName = &#39;/var/www/html/alba/web/uploads/informes/planilla.xlsx&#39;;<br><br>        /**  Create a new Reader of the type defined in $inputFileType  **/<br>
         $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);<br>        $objPHPExcel-&gt;setActiveSheetIndex(0);<br>        $j=13;<br>        $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;M7&#39;, &quot;Periodo: &quot;.$periodo-&gt;getDescripcion());<br>
        $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;D8&#39;, $anio-&gt;getDescripcion());<br>        $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;F9&#39;, $division-&gt;getDescripcion());<br>        $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;L8&#39;, $this-&gt;getUser()-&gt;getAttribute(&#39;usuario&#39;));<br>
        $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;L9&#39;, $this-&gt;getUser()-&gt;getAttribute(&#39;usuario&#39;));<br>        $x=0;<br>        foreach($this-&gt;aAlumno as $alumno){<br>            $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;B&#39;.$j, $x+1);<br>
            $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;C&#39;.$j, $alumno-&gt;getNroDocumento());<br>            $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue(&#39;D&#39;.$j, $alumno-&gt;getApellido().&quot; &quot;.$alumno-&gt;getApellidoMaterno().&quot; &quot;.$alumno-&gt;getNombre());<br>
            $j++;<br>            $x++;<br>        }<br><br>        header(&#39;Pragma: public&#39;);<br>        header(&#39;Expires: 0&#39;);<br>        header(&#39;Cache-Control: must-revalidate, post-check=0, pre-check=0&#39;);<br>
        header(&#39;Content-Type: application/vnd.ms-excel&#39;);<br>        header(&#39;Content-Disposition: attachment;filename=&quot;planilla_&#39;.$division-&gt;getDescripcion().&quot;_&quot;.$id_asignatura.&quot;_&quot;.$periodo-&gt;getDescripcion().&#39;.xlsx&quot;&#39;);<br>
        header(&#39;Content-Transfer-Encoding: binary&#39;); <br><br>        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$inputFileType); <br>        $objWriter-&gt;setOffice2003Compatibility(true); <br>        $objWriter-&gt;save(&#39;php://output&#39;);<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>