Excelwriter和phpExcelReader 2无法读取文件

时间:2012-05-09 11:00:29

标签: php excel pack spreadsheet-excel-writer

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

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

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));

我对如何修复它一无所知。请帮忙。

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

由Harish Chauhan的ExcelWriter类生成的文件不是实际的OLE BIFF .xls文件,而是HTML标记和SpreadSheetML中的一些元素的混合,SpreadSheetML是Microsoft定义的XML格式,可替代Excel 2003中的BIFF。它从不证明特别受欢迎;但是MS Excel本身的后续版本仍然可以读写这种格式。 MS Excel也非常宽容地阅读HTML标记,尽管最新版本会通知您,如果文件格式与其扩展名不匹配。

phpExcelReader 2用于读取Excel BIFF文件,因此无法读取Harish Chauhan班级生成的非OLE /非BIFF文件。

如果您想以正确的格式撰写和阅读文件,我建议您使用PHPExcel或其他许多PHP libraries that work with genuine Excel files

答案 1 :(得分:0)

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

因此解决方案是使用LibreOffice 命令行转换为XLSX(也适用于CSV),然后使用任何“moderner”Excel解析器解析它。

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

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

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