You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级PhpSpreadsheet至1.2.1版本后无法读取XLS文件求助

解决PhpSpreadsheet 1.2.1版本无法读取XLS文件的问题

针对你升级到PhpSpreadsheet 1.2.1后遇到的"Unable to identify a reader for this file"错误,我整理了几个可行的解决方案:

1. 手动指定XLS读取器,跳过自动识别

新版本的IOFactory自动识别可能对某些非标准XLS文件的兼容性下降,直接实例化Xls读取器可以绕过这个问题:

use PhpOffice\PhpSpreadsheet\Reader\Xls;

// 直接创建XLS读取器实例
$reader = new Xls();
try {
    $spreadsheet = $reader->load($inputFileName);
    $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
    // 这里处理你的表格数据
} catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) {
    echo '读取失败:' . $e->getMessage();
}

2. 验证XLS文件的有效性

报错也可能是文件本身的问题:

  • 确认文件是标准的BIFF格式XLS,不是把CSV/其他格式改后缀冒充的;
  • 用Microsoft Excel或WPS重新打开文件,另存为XLS格式后再尝试读取;
  • 检查文件是否损坏,比如下载过程中是否中断、存储介质是否出错。

3. 确保依赖扩展和包完整

升级后可能依赖没有同步更新:

  • 检查PHP是否启用了php_zip、php_xml、php_gd2等必要扩展(PhpSpreadsheet读取XLS需要这些基础扩展支持);
  • 执行composer update命令,确保PhpSpreadsheet及其依赖包都正确安装到适配版本。

4. 回溯旧版本的读取逻辑

你提到旧版本使用的$rea...,大概率是旧版本直接实例化了Xls读取器而非依赖IOFactory自动识别。回到这种显式指定读取器的方式,通常能快速解决版本兼容问题。

内容的提问来源于stack exchange,提问作者Ciro Mora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:47:49