composer如何安装并在项目中使用Excel处理插件_composer引入PhpSpreadsheet【实战】

发布时间 - 2026-01-20 00:00:00    点击率:
Composer安装需先配置全局命令:Windows用官方安装器勾选Add to PATH,macOS/Linux用curl下载后移至/usr/local/bin并加执行权限;再通过composer require phpoffice/phpspreadsheet引入PhpSpreadsheet库,注意require autoload.php、路径正确及大文件读取优化。

Composer 安装失败或命令不可用?先确认基础环境

没装好 composer,后面所有操作都白搭。不是“下载个 composer.phar 放项目里就行”,得让系统全局识别 composer 命令。

  • Windows 用户推荐用 官方安装器,勾选“Add to PATH”;装完在 CMD 执行 composer --version,有输出才算成功
  • macOS / Linux 用户优先用 curl -sS https://getcomposer.org/installer | php 下载 composer.phar,再执行 sudo mv composer.phar /usr/local/bin/composer 并加执行权限:sudo chmod +x /usr/local/bin/composer
  • 如果报错 Command "compos

    er" not found
    ,说明 PATH 没生效,重启终端或运行 source ~/.zshrc(或 ~/.bash_profile

用 composer require 引入 PhpSpreadsheet 到项目

别去 GitHub 下 zip 包手动解压,也别用 git clone,直接走 Composer 依赖管理最稳。PhpSpreadsheet 是官方维护的现代 Excel 库,替代已废弃的 PHPExcel。

  • 确保你在项目根目录(即有 composer.json 的地方),运行:
    composer require phpoffice/phpspreadsheet
  • 会自动写入 composer.jsonrequire 字段,并生成/更新 vendor/autoload.php
  • 如果提示版本冲突(比如 Laravel 项目里已有旧版 guzzlehttp/guzzle),加 --with-all-dependencies 强制兼容:
    composer require phpoffice/phpspreadsheet --with-all-dependencies
  • 国内慢?提前配好镜像源:
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

在 PHP 脚本中加载并读写 Excel 文件

引入后不 autoload 就等于没装。PhpSpreadsheet 不提供全局函数,必须用命名空间 + 自动加载。

  • 开头必须包含:
    require 'vendor/autoload.php';
  • 读取 .xlsx 文件示例:
    $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('data.xlsx');
    $worksheet = $spreadsheet->getActiveSheet();
    echo $worksheet->getCell('A1')->getValue();
  • 写入新文件示例:
    $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World');
    $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
    $writer->save('output.xlsx');
  • 注意:IOFactory::load() 会根据后缀自动选择读取器,但只支持 .xlsx.xls.csv 等常见格式;读 .xls 需额外装 phpoffice/phpspreadsheet 的依赖 markbaker/complexmarkbaker/matrix(Composer 会自动处理)

常见报错和绕过方式

实际写代码时卡在某一步,大概率是这几个点没对上。

  • Class 'PhpOffice\PhpSpreadsheet\Spreadsheet' not found:没执行 require 'vendor/autoload.php',或者路径错了(比如脚本不在项目根目录,要写成 __DIR__ . '/vendor/autoload.php'
  • Could not open data.xlsx for reading! File does not exist:检查文件路径是否相对当前脚本位置,建议用绝对路径调试:__DIR__ . '/data.xlsx'
  • 内存溢出(Allowed memory size exhausted):大文件读取默认加载全量数据,改用 ChunkReadFilter 或设置读取配置:
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
    $reader->setReadDataOnly(true); // 只读值,不读样式
  • Laravel 中导出 Excel 报 500?确认没漏掉 use PhpOffice\PhpSpreadsheet\Spreadsheet;,且控制器方法里没 echo 其他内容(会破坏二进制响应头)
实际用起来,最常被忽略的是 vendor/autoload.php 的引入时机和路径,以及读大文件时没开 setReadDataOnly(true) 导致 OOM。其他都是路径、命名空间、扩展(如 zipxml)没开这类基础问题。


# php  # linux  # excel  # laravel  # js  # git  # json  # composer  # windows  # github  # echo  # for  # 命名空间  # require  # xml  # cURL  # class  # macos  # https  # 大文件  # 报错  # 勾选  # 的是  # 都是  # 加载  # 已有  # 你在  # 就行  # 错了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript实现Fly Bird小游戏  Swift中swift中的switch 语句  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  如何在香港免费服务器上快速搭建网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel如何发送系统通知?(Notification渠道示例)  微信小程序 require机制详解及实例代码  如何在 Pandas 中基于一列条件计算另一列的分组均值  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  浅述节点的创建及常见功能的实现  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  北京网站制作的公司有哪些,北京白云观官方网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  音乐网站服务器如何优化API响应速度?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  如何用IIS7快速搭建并优化网站站点?  中国移动官方网站首页入口 中国移动官网网页登录  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel如何创建自定义Artisan命令?(代码示例)  如何在IIS中配置站点IP、端口及主机头?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel如何实现本地化和多语言支持?(i18n教程)  如何在IIS管理器中快速创建并配置网站?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  移动端脚本框架Hammer.js  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何为不同团队 ID 动态生成多个非值班状态按钮  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  韩国服务器如何优化跨境访问实现高效连接?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何在云虚拟主机上快速搭建个人网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  公司门户网站制作流程,华为官网怎么做?  如何快速打造个性化非模板自助建站?  简历在线制作网站免费版,如何创建个人简历?  Laravel怎么在Blade中安全地输出原始HTML内容  🚀拖拽式CMS建站能否实现高效与个性化并存?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  在Oracle关闭情况下如何修改spfile的参数  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  如何在企业微信快速生成手机电脑官网?  js实现点击每个li节点,都弹出其文本值及修改