首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件无法用精益编写器和phpExcelReader 2读取。

文件无法用精益编写器和phpExcelReader 2读取。
EN

Stack Overflow用户
提问于 2012-05-09 11:00:29
回答 2查看 7K关注 0票数 2

我使用Harish Chauhan的Excel作家生成excel (xls)文件。

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

The filename myXls.xls is not readable

我可以用MS打开"myXls.xls“文件。但是,如果我用另一个名称保存该文件,则可以成功地读取它。

尝试探索代码时,错误似乎是由以下人员提供的:

代码语言:javascript
复制
if (substr($this->data, 0, 8) != IDENTIFIER_OLE) {
    //echo 'Error';
    $this->error = 1;
    return false;
}

IDENTIFIER_OLE的定义是:

代码语言:javascript
复制
define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1));

我不知道怎么修理它。请帮帮忙。

耽误您时间,实在对不起!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-09 19:17:07

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

phpExcelReader 2是用来读取Excel文件的,因此它无法读取由Harish类生成的非OLE/非BIFF文件。

如果您想以正确的格式写入和读取文件,那么我建议您使用PHPExcel或其他许多使用真正Excel文件的PHP库之一。

票数 1
EN

Stack Overflow用户

发布于 2016-07-15 14:42:05

我也有同样的问题。任务是解析非常老的XLS文件(Excel2)。我在PHP中找不到一个库,它可以用这样的旧格式工作。

因此,解决方案是使用将LibreOffice命令行转换为XLSX (也可以工作到CSV ),然后使用任何“仲裁者”解析器来解析它。

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

代码语言:javascript
复制
libreoffice --headless --convert-to xlsx original_source.xls

代码语言:javascript
复制
libreoffice --headless --convert-to csv original_source.xls
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10514736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档