Ya lo han preguntado antes, pero el error que tengo aun no le he visto
solucio, ni aqui ni por fuera
Como ya es usual estoy usando como base esto:
http://bakery.cakephp.org/articles/view/generate-excel-spreadsheets-from-your-database
Hice el patch de OLE para eliminar el bug con utf8 (comentario 15)
Tengo lo siguiente en mi layout:
<?php echo $content_for_layout ?>
<?php
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Type: application/force-download");
header("Content-Type: application/download");;
header("Content-Disposition: inline; filename=\"".$filename.".xls\"");
?>
En mi controlador tengo:
function excel()
{
Configure::write('debug', 0);
//
$data['sheet1'] =$this->Place->find('all');
$this->set('data', $data);
}
Y en mi vista
<?php
/* Define fieldnames: */
$fieldnames= array('name', 'address');
/* Set default font styles: */
$excel->font = 'Tahoma';
$excel->size = 8;
$excel->initFormats(); // initialize default formats
/* Add style for heading: */
$heading_format = $excel->AddFormat(array('bold' => 1, 'align' =>
'center'));
/* Change TIME_FORMAT: */
$excel->formats[TIME_FORMAT]->setNumFormat('hh:mm'); // direct library
call
/* Create Excel sheets: */
$sheet1 =& $excel->AddWorksheet('Localidades');
/* Define layout of worksheet for applications: */
$sheet1->setColumn(0, 0, 5);
$sheet1->setColumn(7, 10, 8);
$sheet1->setColumn(0, 28, 18);
$sheet1->freezePanes(array(1, 1)); // Freeze sheet at 1st row and 1st
column
/* Write headings: */
$excel->write($sheet1, 0, 0, $fieldnames, $heading_format);
debug($sheet1);
/* Write data for applications: */
foreach($data['sheet1'] as $key => $value) {
$i = 0;
foreach($data['sheet1'][$key]['Place'] as $fieldname => $fieldvalue)
{
if($fieldname =='birthdate') {
$excel->write($sheet1, $key+1, $i, $excel->MysqlDatetimeToExcel
($fieldvalue), DATE_FORMAT);
}
elseif($fieldname == 'created') {
$excel->write($sheet1, $key+1, $i, $excel->MysqlDatetimeToExcel
($fieldvalue), DATETIME_FORMAT);
}
elseif($fieldname == 'finances' || $fieldname == 'expenses'){
$excel->write($sheet1, $key+1, $i, $fieldvalue, MONEY_FORMAT);
}
else {
$excel->write($sheet1, $key+1, $i, $fieldvalue);
}
$i++;
}
}
/* Output temporary file to the browser: */
$excel->OutputFile();
?>
El problema que tengo: Caracteres raros, nunca trata de bajar el
archivo. Alguna idea de como hacerlo funcionar en cake 1.2?
Gracias