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

相关推荐
章豪Mrrey nical20 小时前
前后端分离工作详解Detailed Explanation of Frontend-Backend Separation Work
后端·前端框架·状态模式
派大鑫wink1 天前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
程序员爱钓鱼1 天前
Node.js 编程实战:文件读写操作
前端·后端·node.js
xUxIAOrUIII1 天前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home1 天前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
zfj3211 天前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
weixin_462446231 天前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL1 天前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小信啊啊1 天前
Go语言切片slice
开发语言·后端·golang
Victor3561 天前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端