5

我正在使用蛋糕;当我在浏览器中打开 excel 文件时,生成一个函数:

我从 Microsoft Excel 收到此错误:

Excel 无法打开文件“组列表 .xlsx”,因为文件格式或文件扩展名无效。验证文件没有损坏并且文件扩展名与文件格式匹配。

从浏览器下载并再次打开后,我尝试删除文件名中的空格,它显示与上述相同的错误。有人经历过这个并解决了吗?或任何线索,这是怎么回事?

由于上述错误,基本上excel文件已打开但为空。?>我读过一个类似的问题,它说在一个组件文件中删除标签末尾的空格。但我不知道哪个组件文件..?

PS我使用的是Microsoft Excel 2010,这可能是原因吗?PHPExcel 目前是否适用于“Microsoft Excel 2010”?

4

4 回答 4

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 论坛上发布所有详细信息。

于 2011-02-09T09:04:41.550 回答
1

使用适当的标题设置空布局以创建/下载您的 excel 文件

这是PDF文件的示例

<?php 
 header("Content-type: application/pdf"); 
 echo $content_for_layout; 
?> 
于 2012-03-15T22:03:20.583 回答
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;
?>

谢谢

于 2012-07-13T06:48:00.237 回答
0

我强迫我的用户在我的控制器中使用以下代码下载 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() 对象

  • $this->渲染(假);| 为避免将任何内容输出到客户端浏览器,请确保您没有搞砸 Excel 文件

于 2012-10-15T21:34:39.600 回答