将html导出为ex​​cel的问题

时间:2016-07-27 12:13:16

标签: php html excel

为了导出我们的报告,我们将标题设置为' Content-Disposition:attachment; filename = fileName.xls'并将html转储到输出缓冲区,并将excel文件下载得很干净。

直到最近才使用它,现在下载的文件无法在Excel中打开。它没有给出任何错误,只是在关闭所有工作表时显示与屏幕类似的空白灰色屏幕。

奇怪的是,如果您只是在Notepad ++中打开文件,添加空格并保存,Excel将打开它。

我怀疑这对文件的编码是有意义的,当文件被下载时excel是不可接受的,但是在Notepad ++中编辑后会发生变化,而excel会在编辑后打开它。

我尝试过使用ob_clean(),修剪并在转储之前将内容转换为utf8,但似乎没有任何效果,我做错了什么?

以下是重新创建我遇到的问题的示例代码:

ob_clean();
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=filename.xls");
header('Cache-Control: max-age=0');
header_remove('Pragma');

// simple html table
echo '<table><thead><tr><td>header 1</td><td>header 2</td></tr></thead><tbody><tr><td>content 1</td><td>content 2</td></tr></tbody></table>';

上面的代码片段下载了文件&#39; filename.xls&#39;,excel最初没有打开它,但是按照我之前描述的方式编辑后,excel将打开它。

感谢。

2 个答案:

答案 0 :(得分:0)

我有完全相同的问题,然后搜索我发现了这个!

“Excel团队对某些文件类型的行为进行了更改,以提高安全性。”开:https://support.microsoft.com/en-us/kb/3181507

您可以尝试其中一种可能的解决方案/解决方法。

答案 1 :(得分:-1)

问题是exel阻止从互联网下载的不安全文件。

为避免这种情况,您可以在Excel中更改某些设置。 选项 - &gt;信托中心 - &gt;信任中心设置 - &gt;苛刻的观点

取消为来自互联网的文件启用受保护的视图。

保存

那就是它。

您可以打开文件。