7

我正在使用 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 论坛上发现了无数线程,它似乎只影响 Windows 7 文件和第三方库(不仅仅是 PHPExcel)生成的 Excel 文件。但没有人有解决办法。

我还找到了以下 MS KB 文章,但我不熟悉底层的 Excel 规范:http: //support.microsoft.com/kb/2411912

有没有其他人经历过这个?

4

3 回答 3

2

如果这是您从 MS Support 站点突出显示的问题,那么它被锁定在 PHP_OLE 内部的某个地方,可能在 PHPExcel_Shared_OLE_PPS_File 类中。我已在 PHPExcel 网站上将此作为问题 15508提出,并将尝试在周末在 Windows 7 机器上运行一些调试。

不能保证快速修复:但是您已经给了我一个关于如何尝试和重新创建问题以及在哪里查找的指示。

于 2011-03-10T23:05:44.030 回答
1

UTF-8您必须使用标题、创建者、LastModifiedby 等字段来编写。这是我的解决方案。

于 2012-05-06T16:47:45.327 回答
1

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

于 2011-06-28T09:54:41.040 回答