我用框架在做导入的时候遇到了一个问题,程序运行到substr($this->data, 0, 8) != IDENTIFIER_OLE的时候总是return false,而且我分别echo出了substr($this->data, 0, 8)和IDENTIFIER_OLE,它们都是乱码,而且不一样,这是怎么回事,如何解决,有遇到同样问题的友友吗

解决方案 »

  1.   

    在example.php 中,
        将:$data->setOutputEncoding('CP1251');  改为:$data->setOutputEncoding('CP936');
      

  2.   

    IDENTIFIER_OLE 定义
    define('IDENTIFIER_OLE', pack('CCCCCCCC', 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1));
    echo IDENTIFIER_OLE 应该是乱码你能给出 substr($this->data, 0, 8) != IDENTIFIER_OLE 所在的文件名和行号码
    我搜索了整个 PHPExcel 只出现过一次 IDENTIFIER_OLE
    IDENTIFIER_OLE 只是定义了,并没有被使用啊
      

  3.   

    IDENTIFIER_OLE他用了,紧紧是在substr($this->data, 0, 8) != IDENTIFIER_OLE地方用的,搞不太清是excel的原因还是程序的原因,棘手的问题
      

  4.   

    和excel版本有关,phpExcelReader这个类需要你另存为97-2003的excel.如果想操作.xlsx可以用PHPExcel。