staf4 / spout
PHP 库,用于快速且可扩展地读取和写入电子表格文件(CSV、XLSX 和 ODS)
v3.3.0
2021-05-14 21:18 UTC
This package is not auto-updated.
Last update: 2024-09-21 19:12:13 UTC
README
Spout 是一个 PHP 库,用于以快速且可扩展的方式读取和写入电子表格文件(CSV、XLSX 和 ODS)。与其他文件读取器或写入器不同,它能够在保持内存使用量非常低(低于 3MB)的同时处理非常大的文件。
文档
完整文档可以在 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 万行文件不是一件快速的事情)。
支持
版权和许可
版权所有 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();