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();
相关推荐
梦梦代码精9 分钟前
Likeshop一个开源商城到底有哪些功能模块?
java·低代码·开源·php
赏金术士16 分钟前
Kotlin 从入门到进阶 之协程 Flow 模块(九)
开发语言·kotlin·php
学网安的肆伍31 分钟前
【044-WEB攻防篇】PHP应用&SQL盲注&布尔回显&延时判断&报错处理&增删改查方式
前端·sql·php
chatexcel1 小时前
ChatExcel AIPPT实测:基于Excel数据生成PPT,覆盖图表可视化与办公汇报
信息可视化·powerpoint·excel
马踏岛国赏樱花3 小时前
vim新手入门配置
编辑器·vim·excel
杰建云1674 小时前
小程序从零搭建全流程实战指南
开发语言·小程序·php
容智信息4 小时前
不写SQL,不拉Excel:数据分析用“问”的
数据库·人工智能·笔记·数据分析·excel·知识图谱·知识库
淼淼爱喝水5 小时前
管理标准交换机教程
服务器·网络·php·虚拟化技术
lsswear9 小时前
PHP 设计模式
设计模式·php