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

使用phpoffice/phpspreadsheet导入Excel数据报错求助

问题排查与解决方案

错误1:libxml_disable_entity_loader() 废弃提示

这个错误是因为你的PHP版本(7.4+)已废弃libxml_disable_entity_loader()函数,但当前使用的PhpSpreadsheet版本仍在调用它。解决方式:

  • 升级PhpSpreadsheet到最新稳定版:在项目根目录执行composer update phpoffice/phpspreadsheet,新版本已移除该废弃函数的调用。
  • 临时抑制错误(仅应急,不推荐):在代码开头添加error_reporting(E_ALL & ~E_DEPRECATED);,屏蔽废弃类错误提示。

错误2:样式文件中访问空值的数组偏移

这个警告源于PhpSpreadsheet读取Excel样式时遇到空值节点,可能是Excel文件存在异常样式,或旧版本PhpSpreadsheet的兼容bug。解决方式:

  • 优先升级PhpSpreadsheet到最新版,新版本修复了大量样式解析问题。
  • 检查导入的Excel文件:打开文件清除空白单元格的特殊格式等异常样式,重新保存后再导入。
  • 临时抑制警告:添加error_reporting(E_ALL & ~E_DEPRECATED & ~E_WARNING);,但建议从根源解决问题。

关于重定向忽略错误的问题

可以通过修改错误报告级别实现,但不建议这么做——错误提示是在暴露潜在的兼容性或文件问题,忽略可能引发后续严重故障。若一定要临时忽略,在代码最开头(include语句前)添加:

// 关闭所有错误提示
error_reporting(0);
// 或精准屏蔽特定错误
error_reporting(E_ALL ^ E_DEPRECATED ^ E_WARNING);

额外提醒:代码存在SQL注入风险

当前代码直接将Excel数据拼接到SQL语句中,极易遭受注入攻击。建议改用MySQLi预处理语句改写插入逻辑:

// 替换原有INSERT代码
$stmt = $con->prepare("INSERT INTO users (UserLevel, NoIC, UEmail, FullName, Password, UserStatus) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssss", $UserLevel, $NoIC, $UEmail, $FullName, $NoIC, 'Active');
$stmt->execute();
$stmt->close();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:11:08