在最新的Office更新后,php UTF-16LE转换后的文件不能在Excel中打开

我们有一个工作PHP代码片段的年龄。 我们生成简单的HTML表格,而且用户可以将它们保存为XLS文件。 并在Excel中打开它。

现在当我们打开这种types的文件时,Excel打开并显示一个空白的灰色区域。 没有错误,没有消息。 只是一个空白的地方。 这只是在Office 2010获得最后一个(2016.07.14)官方Microsoft Office更新的机器上发生的!

上面提到的PHP代码片段非常简单:

header("Content-Type: application/vnd.ms-excel"); header("Content-Transfer-Encoding: binary"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); header("Content-Disposition: attachment; filename=CO3_finance_export.xls"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $out); 

BOM在那里,$ out包含表。 如果你把任何一个简单的表格放在$ out中 – 这不是在开玩笑。 例如:

 <table><tr><td>XX</td></tr></table> 

这是非常奇怪的,因为如果我打开记事本+ +生成的文件并再次保存(没有任何改变),比Excel将打开它正确。

我认为问题是iconv的地方…因为我删除它Excel显示一些怪异的字符。

有人在相同的情况吗?

我将不胜感激任何关于我的问题的帮助或build议。

Interesting Posts