php高性能的导出excel读写扩展——xlswriter,比传统的Spreadsheet要快很多
1、安装pecl最简单方式参考https://zhuanlan.zhihu.com/p/434020011查询自己的php目录find/-namephp-config2/dev/null先进入php安装的bin目录cd/www/server/php/74//bin/下载php安装pecl的脚本wget--no-check-certificate http://pear.php.net/go-pear.phar-Ogo-pear.php安装peclphp go-pear.phppecl基本命令pecl search xlswriter#查找扩展2、安装xlswriter参考https://xlswriter-docs.viest.me/zh-cn/an-zhuang/pecl-tui-jian通过pecl 安装指定版本xlswriter注意要指定版本默认安装的是最新版这不是我们想要的#安装扩展peclinstallxlswriter-1.3.7可能会报错configure: error: Cannot find php-config. Please use --with-php-configPATH ERROR:/tmp/pear/install/xlswriter/configure --enable-readeryes failed这个错误是因为 PECL 找不到 php-config这通常发生在 PHP 不是通过标准包管理器安装或者路径不在系统 PATH 中的情况。使用 PECL 但先设置环境变量# 设置 PHP 相关路径到环境变量exportPATH/www/server/php/74/bin:$PATH# 验证 php-config 可用php-config--version# 现在可以正常安装了peclinstallxlswriter-1.3.73、安装laravel-xlswriter和使用参考https://learnku.com/articles/56844参考代码?php namespace App\Exports;use Lysice\XlsWriter\Interfaces\FromArray;use Lysice\XlsWriter\Traits\Exportable;use Lysice\XlsWriter\Excel;class UserExport implements FromArray{use Exportable;private$data[];private$headers[];private$filenamedemo.xlsx;private$diskpublic;private$visibilityprivate;/** * 通过构造函数传入动态数据 */ publicfunction__construct(array$data[], array$headers[], string$filenamenull){$this-data$data;$this-headers$headers;if($filename){$this-filename$filename;}}/** * return array */ publicfunctionarray(): array{return$this-data;}/** * return array */ publicfunctionheaders(): array{return$this-headers;}/** * 设置文件名 */ publicfunctionsetFilename(string$filename): self{$this-filename$filename;return$this;}/** * 设置存储磁盘 */ publicfunctionsetDisk(string$disk): self{$this-disk$disk;return$this;}/** * 设置可见性 */ publicfunctionsetVisibility(string$visibility): self{$this-visibility$visibility;return$this;}/** * 保存文件封装后的方法 */ publicfunctionsave(): string{return$this-store($this-filename,$this-disk, Excel::TYPE_XLSX,[visibility$this-visibility]);}}调用方式// 最简单的调用$exportnew UserExport($data,$headers);$path$export-save();// 或者链式调用自定义配置$path(new UserExport($data,$headers))-setFilename(users.xlsx)-setDisk(public)-setVisibility(private)-save();