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

使用PHPSpreadsheet加载XLS文件时触发行列整数错误

处理PHPSpreadsheet加载XLS文件时的行/列ID错误问题

问题描述

加载Excel 97-2003格式(XLS)的表格时触发错误:

Error 0 on line 49 in \PhpSpreadsheet\Cell\CellAddress.php -> Row and Column Ids must be positive integer values

该表格共14列,无公式或外部引用,同格式其他文件可正常加载。尝试将表格内容复制到新文件后能正常加载,但删除表头手动输入单行数据仍会触发相同错误,问题出在原文件本身。

加载代码如下:

require 'PHPSpreadsheet/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$spreadsheet = $reader->load($inputfile);  // <-- 此处加载失败

表格表头及示例数据:

DATE    Course ID   Title of Class  StartTime   PGH Location    Address City    State   Zip Code    Sponsor/Vendor  Instructor if Known Contact Information Telephone
1/10/2023   7280801 Dual Credit Water & Wastewater Workshop 08:00   6   Anywhere Fire Department    123 Main St Any Town    NC  28580   NC Statewide Safety Conference, Inc.    Sam Smith   Joe Smith   252-555-1212

解决方案

1. 修复文件结构

  • 用Excel打开故障文件,选择「另存为」→「Excel 97-2003工作簿(*.xls)」,在保存选项中勾选「删除个人信息」,覆盖原文件后重新加载。
  • 若Excel修复无效,改用LibreOffice Calc打开文件,再另存为XLS格式,它对损坏文件的兼容性修复能力更强。

2. 修改加载代码,跳过无效内容

开启只读模式并忽略空单元格,能规避部分格式异常导致的错误:

require 'PHPSpreadsheet/autoload.php';
use PhpOffice\PhpSpreadsheet\Reader\Xls;

$reader = new Xls();
// 只读模式,只加载数据不处理格式,减少错误概率
$reader->setReadDataOnly(true);
// 忽略空单元格,跳过无效的空区域
$reader->setIgnoreEmptyCells(true);

try {
    $spreadsheet = $reader->load($inputfile);
    // 后续业务逻辑
} catch (\Exception $e) {
    echo '加载失败: ' . $e->getMessage();
}

3. 清除无效单元格区域

打开故障文件,按Ctrl+End定位到表格的最后一个单元格,检查是否存在超出实际数据范围的空单元格或格式异常单元格,删除这些无效区域后保存文件再尝试加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:45:24