PHPExcel在不同系统上的不同行为

时间:2015-11-09 23:41:55

标签: phpexcel

我在localhost和服务器上有PHPExcel。 当我尝试在localhost上读取xlsx文件时 - 一切正常,但是当我尝试在服务器上读取相同的文件时 - 所有带有西里尔文字的单元格都是空的。

所有系统都有相同的PHPExcel和PHP版本。

可能是什么问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

此文件的问题在于它是由无法识别文件名中区分大小写的应用程序创建的。

rels表指示共享字符串表(存储工作簿的所有文本字符串值)称为sharedStrings.xml,但zip中的实际文件称为{{1} }。由MS Excel生成的文件本身使用文件名中的正确大小写,因此我猜这个文件是使用某些第三方工具或库创建的。 MS Excel显然对文件名中的区分大小写更加宽容,允许它无论如何都读取zip。

我可以通过使用

解决这个问题
SharedStrings.xml

而不是

$zip->getFromIndex(
    $zip->locateName('sharedStrings.xml', ZIPARCHIVE::FL_NOCASE);
);

但实施修复需要几天时间

修改

$zip->getFromName('sharedStrings.xml'); 文件第310行附近的某个地方/PHPExcel/Reader/Excel2007.php方法可以更改为:

getFromZipArchive()

然后能够不区分大小写地访问共享字符串文件