Windows 7:“Excel发现不可读的内容”

时间:2011-03-10 20:46:32

标签: windows-7 phpexcel

我正在使用PHPExcel生成一个非常简单的.xls文件(PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5'))。每当使用Excel 2010或2007在Windows 7上打开该文件时,我都会收到以下错误:

Excel在“XXXXXXX.xls”中找到了不可读的内容。你想恢复这个工作簿的内容吗?如果您信任此工作簿的来源,请单击“是”。

当我在Windows XP中的Excel 2010中打开相同的文件时,它可以正常工作。如果我在OpenOffice中打开相同的文件,无论操作系统如何,它都能正常工作。

Windows 7 / Excel 2010:错误

Windows 7 / Excel 2007:错误

Windows XP / Excel 2010:Works

Windows XP / Excel 2007:Works

Any / OpenOffice:Works

当我告诉PHPExcel生成.xlsx文件(PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007'))时,它适用于所有上述组合。

我在MS论坛上发现了无数的线程,它似乎只影响第三方库(不仅仅是PHPExcel)生成的Excel文件的Windows 7文件。但没有人有解决方案。

我还发现了以下MS KB文章,但我不熟悉基础Excel规范:http://support.microsoft.com/kb/2411912

还有其他人经历过这个吗?

3 个答案:

答案 0 :(得分:2)

如果您从MS支持站点突出显示问题,那么它可能位于PHP_OLE内部的某个位置,可能位于PHPExcel_Shared_OLE_PPS_File类中。我在PHPExcel网站上将其作为Issue 15508提出,并尝试在Windows 7机顶盒上运行一些调试。

无法保证快速修复:但您已经给我一个指针,指示如何尝试重新创建问题,以及在哪里查看。

答案 1 :(得分:1)

对我来说,当我使用正确的UTF-8编码字符串而不是ISO-8859-1时,它已得到修复。也许PHPExcel可以暗示不良编码?

答案 2 :(得分:1)

你必须用UTF-8写下标题,创建者,LastModifiedby等字段。这是我的解决方案。