staf4/spout

PHP 库,用于快速且可扩展地读取和写入电子表格文件(CSV、XLSX 和 ODS)

维护者

详细信息

github.com/Staf4/spout

主页

源代码

资助包维护!
adrilo

v3.3.0 2021-05-14 21:18 UTC

README

Latest Stable Version Project Status Build Status Scrutinizer Code Quality Code Coverage Total Downloads

Spout 是一个 PHP 库,用于以快速且可扩展的方式读取和写入电子表格文件(CSV、XLSX 和 ODS)。与其他文件读取器或写入器不同,它能够在保持内存使用量非常低(低于 3MB)的同时处理非常大的文件。

加入社区并讨论 Spout: Gitter

文档

完整文档可以在 http://opensource.box.com/spout/ 找到。

要求

  • PHP 版本 5.4.0 或更高
  • 启用 PHP 扩展 php_zip
  • 启用 PHP 扩展 php_xmlreader

运行测试

master 分支上,只包括单元和功能测试。性能测试需要非常大的文件,因此已被排除。如果您只想检查一切是否按预期工作,则只需执行 master 分支上的测试即可。

如果您想运行性能测试,则需要检出 perf-tests 分支。然后可以根据预期的输出运行多个测试套件。

  • phpunit - 运行整个测试套件(单元 + 功能 + 性能测试)
  • phpunit --exclude-group perf-tests - 只运行单元和功能测试
  • phpunit --group perf-tests - 只运行性能测试

信息提示:性能测试大约需要 30 分钟才能运行(处理 100 万行文件不是一件快速的事情)。

性能测试状态: Build Status

支持

您可以在聊天室中提问、提交新功能想法或讨论 Spout。
Gitter

版权和许可

版权所有 2017 Box, Inc. 保留所有权利。

根据 Apache License, Version 2.0(“许可证”)许可;除非您遵守许可证,否则不得使用此文件。您可以在以下位置获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或经书面同意,否则在许可证下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可协议下管理许可权限和限制的特定语言,请参阅许可证。

示例 XLSX

use Box\Spout\Writer\Style\StyleBuilder;
use Box\Spout\Writer\WriterFactory;

// Инициализация
$excel = WriterFactory::create(\Box\Spout\Common\Type::XLSX);
// Установка стилей для строк
$styleHead = (new StyleBuilder())->setAlignVertical('top')->setFontSize(11)->setFontBold()->build();
$styleBody = (new StyleBuilder())->setAlignVertical('top')->setFontSize(11)->build();
// Установка ширины колонок
$excel->setAdditionalSettings(['rowsHeight' => 29, 'columnsWidth' => [14, 16, 25, 25, 25, 25, 25, 13, 13, 16, 25, 25, 30]]);
// Установка автофильтра
$excel->getCurrentSheet()->setAutoFilter("A1:M{$i}");
// Открытие файла для записи
$excel->openToBrowser('file.xlsx', true); // если не нужно доравбять заголовки - false
// Добавление заголовков
$excel->addRowWithStyle(['Столбец 1', 'Столбец 2'], $styleHead);
// Добавление данных
$excel->addRowWithStyle(['Данные 1', 'Данные 2'], $styleBody);
// Установка названия страницы
$excel->getCurrentSheet()->setName('Sheet1');
// Вывод
$excel->close();
exit();

示例 CSV

use Box\Spout\Writer\Style\StyleBuilder;
use Box\Spout\Writer\WriterFactory;

// Инициализация
$excel = WriterFactory::create(\Box\Spout\Common\Type::CSV);
// Установка разделителя
$excel->setFieldDelimiter(';');
// Открытие файла для записи
$excel->openToBrowser('file.csv', true); // если не нужно доравбять заголовки - false
// Добавление заголовков
$excel->addRowWithStyle(['Столбец 1', 'Столбец 2'], null);
// Добавление данных
$excel->addRowWithStyle(['Данные 1', 'Данные 2'], null);
// Вывод
$excel->close();
exit();