php高性能的导出excel读写扩展——xlswriter,比传统的Spreadsheet要快很多

1、安装pecl最简单方式

参考:https://zhuanlan.zhihu.com/p/434020011

  • 查询自己的php目录

    bash 复制代码
    find / -name php-config 2>/dev/null
  • 先进入php安装的bin目录

    bash 复制代码
    cd /www/server/php/74//bin/
  • 下载php安装pecl的脚本

    bash 复制代码
    wget --no-check-certificate http://pear.php.net/go-pear.phar -O go-pear.php
  • 安装pecl

    bash 复制代码
    php go-pear.php
  • pecl基本命令

    bash 复制代码
    pecl 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和使用

参考:https://learnku.com/articles/56844

参考代码

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();
相关推荐
思茂信息3 小时前
CST交叉cable的串扰(crosstalk)仿真
服务器·开发语言·人工智能·php·cst
yanweijie03178 小时前
对比VLOOKUP、XLOOKUP、INDEX+MATCH三大查找函数
excel
niucloud-admin9 小时前
PHP SAAS 框架常见问题——配置问题——腾讯地图配置
php
Codiggerworld9 小时前
Vim的语法:删除、复制、粘贴,像说话一样自然
编辑器·vim·excel
北漂Zachary9 小时前
PHP3.0:改变Web开发的里程碑
android·php·laravel
实在智能RPA9 小时前
Agent 如何处理流程中的异常情况?——2026企业级智能体稳定性架构深度拆解
开发语言·人工智能·ai·架构·php
aq553560010 小时前
PHP vs C++ vs 易语言:编程语言终极对比
开发语言·c++·php
niucloud-admin10 小时前
PHP SAAS 框架常见问题——配置问题——绑定手机号时提示“failed to verify SmsSdkAppld“
php
Pentane.10 小时前
【数据分析 | 农业项目】蔬菜类商品的自动定价与补货决策 | Tableau & Excel
数据挖掘·数据分析·excel·tableau