Windows 7 视窗7:";Excel发现无法读取的内容“;

Windows 7 视窗7:";Excel发现无法读取的内容“;,windows-7,phpexcel,Windows 7,Phpexcel,我正在使用PHPExcel生成一个非常简单的.xls文件(PHPExcel\u IOFactory::createWriter($PHPExcel,'Excel5'))。无论何时在Windows 7上使用Excel 2010或2007打开该文件,我都会收到以下错误: Excel在“XXXXXXX.xls”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是” 当我在WindowsXP中的Excel2010中打开同一个文件时,它工作正常。如果我在OpenOffice中

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

Excel在“XXXXXXX.xls”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是”

当我在WindowsXP中的Excel2010中打开同一个文件时,它工作正常。如果我在OpenOffice中打开同一个文件,则无论操作系统如何,它都可以工作

Windows 7/Excel 2010:错误

Windows 7/Excel 2007:错误

Windows XP/Excel 2010:工作正常

WindowsXP/Excel2007:Works

任何/开放办公室:工作

当我告诉PHPExcel生成一个.xlsx文件(
PHPExcel\u IOFactory::createWriter($PHPExcel,'Excel2007')
)时,它可以很好地处理上述所有组合

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

我还发现了以下MS KB文章,但我不熟悉基本的Excel规范:


还有其他人遇到过这种情况吗?

如果这是您在MS支持站点上突出显示的问题,那么它会被锁定在PHP\u OLE的内部,可能是在PHPExcel\u Shared\u OLE\u PPS\u File类中。我在PHPExcel网站上提出了这个问题,并将在周末尝试在Windows7机器上运行一些调试


没有快速修复的保证:但是你给了我一个指针,告诉我如何尝试重新创建问题,以及在哪里查找。

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

您必须使用
UTF-8
标题、创建者、LastModifiedby等进行编写。。。领域。这是我的解决方案。

您是否在测试时在相同的框上生成文件(即在XP框和Windows 7框上)?还是要在框之间复制相同的文件以进行测试?感谢链接:我将查看OLE扇区号和链末端标记。。。我知道我无论如何都需要升级OLE writer以支持多个流。我正在Linux服务器上生成一次文件,并在框之间复制/粘贴它,以测试Windows 7/XP和Excel 2010/2007的.32位。+1,用于实际测试不同版本/平台,并确定问题的可能原因。你会惊讶于有多少人在事情不太对劲的时候简单地说“它不工作”。哇,谢谢,我没有意识到你实际上是一个PHPExcel开发人员。@kag-我的罪过是,我现在是唯一一个活跃的开发人员。在我换工作的时候,我试着在几个月内减少我的PHPEXEL工作。。。在开始一个新的角色之前,我现在专注于完成我以前工作的交接,而这个新角色最初将非常耗时。。。但这是一个相当重要的问题,所以我将把它作为一项优先任务。