slam/php-excel

该包已被 废弃 并不再维护。作者建议使用 slam/openspout-helper 包。

旧版更快的 PHPExcel

v5.1.0 2021-12-20 14:40 UTC

README

Slam PHPExcel 旧版 & 更快

Latest Stable Version Downloads Integrate Code Coverage

该包不是旨在完全和灵活,而是为了 快速

PHPOffice/PHPExcelPHPOffice/PhpSpreadsheet 是非常好的库,但它们在写入磁盘之前在内存中抽象了一切。如果你需要写入一个包含数千行和数百列的大型 XLS 文件,这将非常低效且速度慢。

基于 Spreadsheet_Excel_Writer v0.9.3,它可以在 Github 上找到。这不是一个分支:我复制了它,并调整以与 PHP 7.1 兼容,并应用了一些编码标准修复和一些 Scrutinizer 补丁。

安装

composer require slam/php-excel

使用

从版本 4 开始,代码分为两部分

  1. Slam\Excel\Pear 命名空间,原始 Pear 代码
  2. Slam\Excel\Helper 命名空间,一个用于在表格结构上应用简单样式的辅助器
use Slam\Excel\Helper as ExcelHelper;

require __DIR__ . '/vendor/autoload.php';

// Being an Iterator, the data can be any dinamically generated content
// for example a PDOStatement set on unbuffered query
$users = new ArrayIterator([
    [
        'column_1' => 'John',
        'column_2' => '123.45',
        'column_3' => '2017-05-08',
    ],
    [
        'column_1' => 'Mary',
        'column_2' => '4321.09',
        'column_3' => '2018-05-08',
    ],
]);

$columnCollection = new ExcelHelper\ColumnCollection([
    new ExcelHelper\Column('column_1',  'User',     10,     new ExcelHelper\CellStyle\Text()),
    new ExcelHelper\Column('column_2',  'Amount',   15,     new ExcelHelper\CellStyle\Amount()),
    new ExcelHelper\Column('column_3',  'Date',     15,     new ExcelHelper\CellStyle\Date()),
]);

$filename = sprintf('%s/my_excel_%s.xls', __DIR__, uniqid());

$phpExcel = new ExcelHelper\TableWorkbook($filename);
$worksheet = $phpExcel->addWorksheet('My Users');

$table = new ExcelHelper\Table($worksheet, 0, 0, 'My Heading', $users);
$table->setColumnCollection($columnCollection);

$phpExcel->writeTable($table);
$phpExcel->close();

结果

Example