php-xlswriter 使用教程

PHP-XLSXWriter 是一个用于创建 XLSX (Excel 2007+) 文件的 PHP 库。它提供了一种简单、高效的方式来生成复杂的 Excel 表格,而无需依赖大型框架或库。本文将详细介绍 PHP-XLSXWriter 的使用方法和常见功能。

一、安装

  • 环境要求:保证 PHP 版本大于等于 7.0
  • 推荐 PECL 安装:
bash 复制代码
pecl install xlswriter

# 添加 extension = xlswriter.so 到 ini 配置 
  • MAC 安装:

    • 安装依赖

      bash 复制代码
      brew install zlib
    • 编译扩展

      bash 复制代码
      git clone https://github.com/viest/php-ext-excel-export
      
      cd php-ext-excel-export
      
      git submodule update --init
      
      phpize && ./configure --with-php-config=/path/to/php-config --enable-reader
      
      make && make install
    • 功能测试

      bash 复制代码
      make && make test
    • 修改 php.ini

      ini 复制代码
      extension = xlswriter.so
  • UBUNTU 安装:

    • 安装依赖

      bash 复制代码
      apt-get install -y zlib1g-dev
    • 其他同 MAC

  • ALPINE 安装:

    • 添加源

      bash 复制代码
      vim /etc/apk/repositories
      
      # 添加官方 Testing 源
      # http://nl.alpinelinux.org/alpine/edge/testing
    • 使用 APK 安装

      bash 复制代码
      apk add php7-pecl-xlswriter
  • Windows 安装:

    • 下载 DLL
    1. GitHub Release
    2. PECL
    • 编译安装
    1. 搭建 PHP 编译环境

    2. 安装依赖

      cmd 复制代码
      cd PHP_BUILD_PATH/deps
      
      DownloadFile http://zlib.net/zlib-1.2.11.tar.gz
      
      7z x zlib-1.2.11.tar.gz > NUL
      7z x zlib-1.2.11.tar > NUL
      
      cd zlib-1.2.11
      
      cmake -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_C_FLAGS_RELEASE="/MT"
      cmake --build . --config "Release"
    3. 编译扩展

      cmd 复制代码
      cd PHP_PATH/ext
      
      git clone https://github.com/viest/php-ext-excel-export.git
      
      cd php-ext-excel-export
      
      git submodule update --init
      
      phpize
      
      configure.bat --with-xlswriter --with-extra-libs=PATH\zlib-1.2.11\Release --with-extra-includes=PATH\zlib-1.2.11
      
      nmake
  • Docker构建:

    • dockerfile

      dockerfile 复制代码
      FROM alpine:3.9.6 as build
      
      # 构建xlswriter扩展,根据自身需要替换版本号
      ENV XLSWRITER_VERSION 1.3.4.1
      
      RUN apk update \
      && apk add --no-cache php7-pear php7-dev zlib-dev re2c gcc g++ make curl \
      && curl -fsSL "https://pecl.php.net/get/xlswriter-${XLSWRITER_VERSION}.tgz" -o xlswriter.tgz \
      && mkdir -p /tmp/xlswriter \
      && tar -xf xlswriter.tgz -C /tmp/xlswriter --strip-components=1 \
      && rm xlswriter.tgz \
      && cd /tmp/xlswriter \
      && phpize && ./configure --enable-reader && make && make install
      
      #-------------------------------------------------------------------------------------------
      
      FROM alpine:3.9.6
      
      # 根据自身需要,添加其它软件
      RUN apk update && apk add --no-cache php
      
      COPY --from=build /usr/lib/php7/modules/xlswriter.so /usr/lib/php7/modules/xlswriter.so
      
      RUN echo "extension=xlswriter.so" > /etc/php7/conf.d/xlswriter.ini
    • 构建

      bash 复制代码
      docker build -f Dockerfile -t viest/xlswriter:1.3.4.1 .

快速上手

1. 导出文件

如果路径下有相同命名的文件,新文件会覆盖老文件

php 复制代码
$config = [
    'path' => '/home/viest' // xlsx文件保存路径
];
$excel  = new \Vtiful\Kernel\Excel($config);

// fileName 会自动创建一个工作表,你可以自定义该工作表名称,工作表名称为可选参数
$filePath = $excel->fileName('tutorial01.xlsx', 'sheet1')
    ->header(['Item', 'Cost'])
    ->data([
        ['Rent', 1000],
        ['Gas',  100],
        ['Food', 300],
        ['Gym',  50],
    ])
    ->output();

2. 读取文件

  • 读取文件已支持 windows 系统,版本号大于等于 1.3.4.1;
  • 扩展版本大于等于 1.2.7;
  • PECL 安装时将会提示是否开启读取功能,请键入 yes;

编译时需添加 --enable-reader

bash 复制代码
./configure --enable-reader
php 复制代码
$config   = ['path' => './tests'];
$excel    = new \Vtiful\Kernel\Excel($config);

// 导出测试文件
$filePath = $excel->fileName('tutorial.xlsx')
    ->header(['Item', 'Cost'])
    ->output();

// 读取测试文件
$data = $excel->openFile('tutorial.xlsx')
    ->openSheet()
    ->getSheetData();

var_dump($data); // [['Item', 'Cost']]

3.手动销毁资源

默认所有资源将在变量生命周期结束时全部销毁,除此之外你可以手动关闭销毁。

php 复制代码
$config = [
    'path' => '/home/viest' // xlsx文件保存路径
];

$excel = new \Vtiful\Kernel\Excel($config);
$filePath = $excel->fileName('tutorial01.xlsx')
    ->header(['Item', 'Cost'])
    ->output();

// 关闭当前打开的所有文件句柄 并 回收资源
$excel->close();

详细文档教程

文档 PHP-Xlswriter

相关推荐
XiangCoder15 分钟前
🔥Java核心难点:对象引用为什么让90%的初学者栽跟头?
后端
二闹26 分钟前
LambdaQueryWrapper VS QueryWrapper:安全之选与灵活之刃
后端
得物技术26 分钟前
Rust 性能提升“最后一公里”:详解 Profiling 瓶颈定位与优化|得物技术
后端·rust
XiangCoder32 分钟前
Java编程案例:从数字翻转到成绩统计的实用技巧
后端
aiopencode33 分钟前
iOS 文件管理全流程实战,从开发调试到数据迁移
后端
Lemon程序馆1 小时前
Kafka | 集群部署和项目接入
后端·kafka
集成显卡1 小时前
Rust 实战五 | 配置 Tauri 应用图标及解决 exe 被识别为威胁的问题
后端·rust
阑梦清川1 小时前
派聪明知识库项目---关于IK分词插件的解决方案
后端
jack_yin1 小时前
飞书机器人实战:用MuseBot解锁AI聊天与多媒体能力
后端
阑梦清川1 小时前
派聪明知识库项目--关于elasticsearch重置密码的解决方案
后端