Windows 7:“Excel发现不可读的内容”
我使用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:有效
Windows XP / Excel 2007:有效
任何/ OpenOffice:有效
当我告诉PHPExcel生成一个.xlsx文件( PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007')
)时,它适用于所有上述组合。
我在MS论坛上发现了无数的线索,它似乎只影响第三方库生成的Excel文件(不只是PHPExcel)的Windows 7文件。 但没有人有解决方案。
我还发现了以下MS KB文章,但我不熟悉底层的Excel规范:http://support.microsoft.com/kb/2411912
有没有其他人经历过这个?
如果这是您从MS支持站点突出显示的问题,那么它将锁定在PHP_OLE的内部某处,可能位于PHPExcel_Shared_OLE_PPS_File类中。 我在PHPExcel网站上提出了问题15508,并尝试在Windows 7盒子上运行一些周末的调试。
没有一个快速解决方案的保证:但是你给了我一个关于如何尝试和重新创建问题的指针,以及在哪里寻找。
对于我来说,当我使用适当的UTF-8编码字符串而不是ISO-8859-1时,它是固定的。 也许PHPExcel可以暗示糟糕的编码?
你必须用UTF-8
编写标题,创建者,LastModifiedby等字段。 这是我的解决方案。