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

v3.0.19 2024-09-09 17:11 UTC

README

此版本

此分支是 Spout v3.0 的修改版本,具有添加合并单元格、注释、公式单元格、列尺寸和 XLSX 写入器的自动筛选功能。

关于

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

加入社区并讨论 Spout: Gitter

文档

很抱歉,我目前无法为新方法创建文档。

我将仅列出一些小示例

合并单元格

$worksheet = $writer->getCurrentSheet();
$worksheet->mergeCells('A1:B1');

行高

$rowStyle = (new StyleBuilder())
    ->setFontSize(10)
    ->setFontName('Arial')
    ->setRowHeight(50)
    ->build();
$writer->addRow(new Row([new Cell('Hello World')], $rowStyle));

列维度(宽度)

// Specific size
$worksheet->addColumnDimension(
    new ColumnDimension('A', 50 )
);

// Autosize 
$worksheet->addColumnDimension(new ColumnDimension(
    'A',
    -1,
    true
));

自动筛选

启用 Excel 自动筛选

$worksheet = $writer->getCurrentSheet();
$worksheet->setAutoFilter('A1:Z1');

公式值

添加了对显示公式计算值的支持(不会计算,您需要传递正确的值)

$Cell = new Cell('=A1', null);
$Cell->setCalculatedValue('100.00');

数字格式

$originalValue = 100.0;
$value = 'R$'.number_format($originalValue, 2,',','.');
$style = (new StyleBuilder())
        ->setFontSize(10)
        ->setFontName('Arial')
        ->setNumberFormat(new NumberFormat('0 - "' . $value . '"'))
        ->build();
$Cell = new Cell($value, $style);
// date
$styleMonthYear =  (new StyleBuilder())
    ->setFontSize(10)
    ->setFontName('Arial')
    ->setNumberFormat(new NumberFormat('MM/YYYY'))
    ->build();

注释

$worksheet = $writer->getCurrentSheet();
$worksheet->addComment(
    new Comment('A1', 'My comment', 'Comment user, null for nothing')
);

从单元格索引获取列索引

返回与基数为 26 的单元格索引相关联的基数 10 列索引。

Excel 使用 A 到 Z 的字母作为列索引,其中 A 是第 1 列,Z 是第 26 列,AA 是第 27 列。

映射是从 0 开始的,所以 0 映射到 A,B 映射到 1,Z 映射到 25,AA 映射到 26。

// echo 0
echo CellHelper::getColumnToIndexFromCellIndex('A1');

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

要求

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

支持

我不会为这个分支提供全面的支持,这只是一个针对特定项目的分支。

版权和许可

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

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

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

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