1、安装pecl最简单方式
-
查询自己的php目录
bashfind / -name php-config 2>/dev/null
-
先进入php安装的bin目录
bashcd /www/server/php/74//bin/ -
下载php安装pecl的脚本
bashwget --no-check-certificate http://pear.php.net/go-pear.phar -O go-pear.php -
安装pecl
bashphp go-pear.php -
pecl基本命令
bashpecl search xlswriter #查找扩展
2、安装xlswriter
参考:https://xlswriter-docs.viest.me/zh-cn/an-zhuang/pecl-tui-jian
通过pecl 安装指定版本xlswriter,注意要指定版本,默认安装的是最新版,这不是我们想要的
bash
#安装扩展
pecl install xlswriter-1.3.7
可能会报错:configure: error: Cannot find php-config. Please use --with-php-config=PATH ERROR:/tmp/pear/install/xlswriter/configure --enable-reader=yes' failed
这个错误是因为 PECL 找不到 php-config,这通常发生在 PHP 不是通过标准包管理器安装,或者路径不在系统 PATH 中的情况。
使用 PECL 但先设置环境变量
bash
# 设置 PHP 相关路径到环境变量
export PATH=/www/server/php/74/bin:$PATH
# 验证 php-config 可用
php-config --version
# 现在可以正常安装了
pecl install xlswriter-1.3.7
3、安装laravel-xlswriter和使用
参考代码
bash
<?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 $filename = 'demo.xlsx';
private $disk = 'public';
private $visibility = 'private';
/**
* 通过构造函数传入动态数据
*/
public function __construct(array $data = [], array $headers = [], string $filename = null)
{
$this->data = $data;
$this->headers = $headers;
if ($filename) {
$this->filename = $filename;
}
}
/**
* @return array
*/
public function array(): array
{
return $this->data;
}
/**
* @return array
*/
public function headers(): array
{
return $this->headers;
}
/**
* 设置文件名
*/
public function setFilename(string $filename): self
{
$this->filename = $filename;
return $this;
}
/**
* 设置存储磁盘
*/
public function setDisk(string $disk): self
{
$this->disk = $disk;
return $this;
}
/**
* 设置可见性
*/
public function setVisibility(string $visibility): self
{
$this->visibility = $visibility;
return $this;
}
/**
* 保存文件(封装后的方法)
*/
public function save(): string
{
return $this->store(
$this->filename,
$this->disk,
Excel::TYPE_XLSX,
['visibility' => $this->visibility]
);
}
}
调用方式:
bash
// 最简单的调用
$export = new UserExport($data, $headers);
$path = $export->save();
// 或者链式调用自定义配置
$path = (new UserExport($data, $headers))
->setFilename('users.xlsx')
->setDisk('public')
->setVisibility('private')
->save();