跳转到主内容
极星编程网:以代码为星,赴技术山海!

Composer怎么安装Simple Excel_Composer如何引入spatie/simple-excel轻量级读写CSV和XLSX文件【教程】

spatie/simple-excel 安装与使用需满足 PHP ≥ 8.0、启用 zip 和 xml 扩展,确保 Composer 版本较新,写入 XLSX 时用绝对可写路径并正确设置响应头。 Composer 安装 spatie/simple-excel 失败?先确认 PHP 版本和扩展 spatie/simple-excel 要求 PHP ≥ 8.0,且必须启用
zip
和
xml
扩展(XLSX 依赖 ZIP 解压 + XML 解析)。常见报错如
Class 'ZipArchive' not found
或
Package spatie/simple-excel has a PHP requirement incompatible with your PHP version
,基本都卡在这儿。 运行
php -v
确认版本 ≥ 8.0 运行
php -m | grep -E "zip|xml"
检查扩展是否加载 Linux 下缺 zip 扩展:通常需
sudo apt install php-zip
(Debian/Ubuntu)或
sudo yum install php-pecl-zip
(CentOS/RHEL),然后重启 PHP-FPM 或 Apache Windows 用户注意:PHP.ini 中取消注释
extension=zip
和
extension=dom
(dom 是 xml 的依赖) composer require 报错“could not parse version constraint”?检查 Composer 版本 老版本 Composer(^1.16.0),会直接报解析错误。这不是包的问题,是工具太旧。 执行
composer --version
,低于
2.0.0
就得升级 升级命令:
composer self-update
(全局安装)或
php composer.phar self-update
(局部) 升级后重试
composer require spatie/simple-excel
,别加
@dev
或分支名——稳定版已足够覆盖 CSV/XLSX 基础读写 读取 XLSX 文件时内存爆掉或超时?别用
SimpleExcelReader::create()
直读大文件
SimpleExcelReader::create()
默认把整张表加载进内存,10MB 以上的 XLSX 很容易触发
Allowed memory size exhausted
或
Maximum execution time exceeded
。它适合小数据( Composer 2.9.6 Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。 下载 大文件必须用流式读取:
SimpleExcelReader::create($path)->usingMemoryLimit(64 * 1024 * 1024)
控制单次缓冲大小 更稳妥的做法是配合
->eachRow(...)
迭代处理,避免全量载入:
use Spatie\SimpleExcel\SimpleExcelReader;

SimpleExcelReader::create('data.xlsx')->eachRow(function (array $row) { // 每行单独处理,不存历史 processRow($row); });

CSV 场景下,
->skipFirstRow()
很常用,但 XLSX 不一定有表头——得看 Excel 实际结构,别无脑链式调用 写入 XLSX 报错 “Could not open file for writing”?路径和权限比想象中敏感
SimpleExcelWriter::create($filename)
的
$filename
必须是**可写的绝对路径**,相对路径(如
exports/report.xlsx
)在 CLI 和 Web 环境下行为不一致,Web 下常因工作目录是
/var/www/html
导致写入失败。 写入前务必用
is_writable(dirname($filename))
检查父目录权限 推荐用
__DIR__ . '/exports/report-' . date('Ymd-His') . '.xlsx'
构造绝对路径 注意:XLSX 写入不支持追加模式(
append
),每次都是新建文件;若需多批次写入,得自己缓存数据再一次性输出 导出到浏览器时,别忘了设 header:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
和
header('Content-Disposition: attachment; filename="report.xlsx"');
实际用起来,最麻烦的从来不是语法,而是 PHP 环境扩展、Composer 工具链、文件系统权限这三块拼图没对齐。少一个,
require
就卡住,
create()
就崩掉,连 demo 都跑不起来。

相关文章