我正在使用Cake;当我在浏览器中使用函数generate打开excel文件时:
我从Microsoft Excel收到此错误:
Excel无法打开 文件'Groups list .xlsx'因为 文件格式或文件扩展名不是 有效。验证文件没有 已损坏,该文件 扩展名匹配的格式 文件。
我已经尝试在从浏览器下载后删除文件名中的空格并再次打开它,它显示与上面相同的错误。有人经历过这个并解决了吗?或者发生了什么的任何线索?
基本上,由于上述错误,excel文件已打开但为空。我已经阅读了一个类似的问题,即在其中一个组件文件中删除?>
标记末尾的空格。但我不知道哪个组件文件..?
P.S。我正在使用Microsoft Excel 2010,这可能是原因吗? PHPExcel目前适用于 - “Microsoft Excel 2010”吗?
答案 0 :(得分:2)
PHPExcel Excel2007 Writer应该生成有效的xlsx文件,这些文件可以由Excel 2007,Excel 2010和带有兼容包的Excel 2003读取。我实际上用Excel2010和Excel2003进行了大部分测试。
要检查的第一件事是通过在文本编辑器中打开它是否有任何虚假字符回显到文件中。如果有,那么这些文本可以作为找到问题的指南。特别要注意空格或换行符作为文件中的第一个字符。
xlsx文件是xml文件的压缩集合,因此如果文本编辑器中没有明显的文本字符串(PK签名旁边),请尝试解压缩(使用适合您的操作平台的任何解压缩程序)。这可能会提供其他错误消息,可以帮助诊断问题。
如果您在Windows平台上运行,那么ZipArchive扩展程序(php_zip.dll)的一些错误版本可能会导致此错误。最新的SVN代码允许您使用PCLZip作为ZipArchive的替代方案。
如果您仍然遇到问题,请尝试在PHPExcel论坛上发布所有详细信息。
答案 1 :(得分:1)
使用适当的标题设置空白布局以创建/下载您的Excel文件
以下是PDF文件的示例
<?php
header("Content-type: application/pdf");
echo $content_for_layout;
?>
答案 2 :(得分:0)
你试过这个吗?
<?php
$file="test.xls";
$test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");
echo $test;
?>
由于
答案 3 :(得分:0)
我强制用户在我的Controller中使用以下代码下载Excel工作表(我使用PHPExcel在我的CakePHP应用程序上生成报告):
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.'myreportname.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
$this->render(false);
$ objPHPExcel |这是我的工作表,一个PHPExcel()对象
$这 - &GT;呈现(假); |为了避免任何事情被输出到客户端浏览器,请确保您没有搞砸Excel文件