我正在使用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
还有其他人经历过这个吗?
答案 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等字段。这是我的解决方案。