Hola a todos, les tengo una pequeña duda.
Resulta que hice un reporte con phpexcel y tengo el problema de que
cuando hago render de la vista que muestra el reporte (download xls), no
me descarga el archivo como excel, sino que me hace un echo textual del
objeto excel generado, algo como esto:
ÐÏ à¡± á; þÿ þÿÿÿþÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ì Ñ B ° = ¼%r 8 X " 1 Ü Verdana1
à õÿ À à õÿ À à
“ €ÿ’â8ÿÿÿ–––ÿÿÿÿÿÿÿÿ€€€€€€€€€ÀÀÀ€€€™™ÿ™3fÿÿÌÌÿÿffÿ€€fÌÌÌÿ€ÿÿÿÿÿÿ€€€€€ÿÌÿÌÿÿÌÿÌÿÿ™™Ìÿ
WorksheetÁ Á gæ ® ü
Participants list
Id Nombre nombre-0 nombre-1 nombre-2 nombre-3 nombre-4
......
Para ello realice este ejemplo
http://bakery.cakephp.org/articles/melgior/2010/01/26/simple-excel-spreadsheet-helper
El header obviamente no esta funcionando, siendo que existe una *funcion
en el helper* que tengo que lo cambia..
function output($title) {
header("Pragma: public");
header("Expires: 0");
header("Content-type: application/vnd.ms-excel");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment;filename=$title.xls");
$objWriter = new PHPExcel_Writer_Excel5($this->xls);
$objWriter->setTempDir(TMP);
$objWriter->save('php://output');
}
*controlador*
function descargar_reporte($pid=null,$cid){
Configure::write('debug', 0);
$this->layout = 'ajax';
$this->autoRender = false;
.....
$this->set('practico', $data);
$this->render("descargar_reporte","ajax");
}
*y en mi vista*
<?php $excel->generate($practicos, 'Participants list '); ?>
fix encontrado (artesanal)
setear los headers en la accion del controlador, crear la una tabla html
dinamicamente y luego hacer echo,
esto no me convence porque ms excel no lo reconoce 100% (aunque si se
puede abrir y revisar sin problemas). pero esta feo.
*controlafor*
function descargar_reporte($pid=null,$cid){
Configure::write('debug', 0);
$this->layout = 'ajax';
$this->autoRender = false;
header("Pragma: public");
header("Expires: 0");
header("Content-type: application/vnd.ms-excel charset=utf-8");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment;filename=archivo.xls");
foreach($etapas as $etapa):
$reporte = $reporte."<tr>";
$reporte =
$reporte."<td><strong>".utf8_decode($etapa["Etapa"]["titulo"])."</strong></td>";
$reporte = $reporte."<td>".$etapa["Etapa"]["id"]."</td>";
$reporte = $reporte."</tr>";
endforeach;
$reporte = $reporte."</table>";
echo $reporte;
die;
}
Resumiendo, existe alguna forma de obviar el render, ya que
automaticamente me agrega unos divs y otras cosas html que invalidan mi
archivo excel. Como usar un layout y setearle los headers a mano de
alguna forma????
intente agregar los headers a un nuevo layout, pero el render del accion
sigue agregando cosas de mas...
alguna idea, ayuda, comentario o consulta??????
por favor...
saludos cordiales
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.