用Excelwriter和phpExcelReader 2不能读取文件

我使用Harish Chauhan的Excel Writer生成一个excel(xls)文件。

然后,我使用phpExcelReader 2读取Excel Writer类创build的文件,但始终出现此错误:

The filename myXls.xls is not readable

我可以用MS Excel打开“myXls.xls”文件。 但是,如果我用另一个名字保存文件,它可以成功读取。

尝试探索代码,似乎错误是由:

 if (substr($this->data, 0, 8) != IDENTIFIER_OLE) { //echo 'Error'; $this->error = 1; return false; } 

IDENTIFIER_OLE被定义为:

 define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1)); 

我不知道如何解决这个问题。 请帮忙。

谢谢你的时间!

由Harish Chauhan的ExcelWriter类生成的文件不是实际的OLE BIFF .xls文件,而是混合了HTML标记和SpreadSheetML中的一些元素,这是Microsoft定义的XML格式,用于替代Excel 2003中的BIFF。它从未certificate特别受欢迎; 但MS Excel的更高版本本身仍然可以读取和写入这种格式。 MS Excel对于阅读HTML标记也非常宽容,尽pipe最新版本会告诉你一个文件格式是否与其扩展名不符。

phpExcelReader 2是为了读取Excel BIFF文件而编写的,因此它不能读取Harish Chauhan的类所生成的非OLE /非BIFF文件。

如果你想以正确的格式编写和读取文件,那么我build议你使用PHPExcel ,或者其他PHP文件库中的一个 。

我有同样的问题。 任务是parsing非常旧的XLS文件(Excel2)。 我找不到在PHP中使用这种旧格式的任何库。

因此,解决scheme是使用LibreOffice命令行转换为XLSX(也可以使用CSV),然后使用任何“moderner”Excelparsing器进行parsing。

我们在我们的服务器上安装了LibreOffice,这是要转换的命令:

 libreoffice --headless --convert-to xlsx original_source.xls 

要么

 libreoffice --headless --convert-to csv original_source.xls