在我的Project excel布局中,我添加了
<?php
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/vnd.ms-excel");/*.pdf,.xls*/
header ("Content-Disposition: attachment; filename=Report.xls" );
header ("Content-Description: Generated Report" );
?>
<?php echo $content_for_layout ?>
<?php
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/vnd.ms-excel");/*.pdf,.xls*/
header ("Content-Disposition: attachment; filename=Report.xls" );
header ("Content-Description: Generated Report" );
?>
<?php echo $content_for_layout ?>
并在我的控制器中
和export_xls.ctp保持空白。 function export_xls($id=null) {
$this->render('export_xls', 'export_xls');
}
在Windows中,它创建report.xls文件,但是它下载的mac os safari浏览器为report.xls.html 该怎么做我不明白。我正在使用cakephp 2.1
请帮我解决这个问题.....
答案 0 :(得分:0)
.ctp或export_xls函数中需要有内容。您实际上并没有为文件输出任何内容。
答案 1 :(得分:0)
你的标题似乎没问题(虽然我认为Content-type
应该是Content-Type
),但尝试使用Cake的内置响应类。适用于XLS文件。在您的控制器中:
$this->response->file($path,array('download' => true, 'name' => 'Report.xls'));
return $this->response;