baptouuuu/spreadsheet

电子表格对象表示

1.0.0 2016-07-16 14:07 UTC

This package is auto-updated.

Last update: 2024-09-05 18:38:48 UTC


README

提供电子表格对象建模的库(所有对象都是不可变的)。它包含从文件构建电子表格并将电子表格存入文件的对象。

安装

composer require baptouuuu/spreadsheet

用法

use Spreadsheet\{
    Spreadsheet,
    Sheet,
    Cell,
    Position
};

$sheet = new Sheet('sheet 1');
$sheet = $sheet
    ->add(
        new Cell(
            new Position('A', 1),
            'A1 value'
        )
    )
    ->add(
        new Cell(
            new Position('B', 2),
            'B2 value'
        )
    );
$spreadsheet = new Spreadsheet('My Spreadsheet');
$spreadsheet = $spreadsheet->add($sheet);

将电子表格转换为CSV

use Spreadsheet\{
    Writer\CsvWriter,
    Formatter\FormatterInterface,
    File\Csv
};
use Innmind\Immutable\Map;

$writer = new CsvWriter(';', true, new Map('string', FormatterInterface::class));
$file = $writer->write($spreadsheet);
$file instanceof Csv; //true
(string) $file->name(); //sheet 1.csv
(string) $file->content();
/*
A;B
A1;
;B2
*/

如果您的电子表格包含多个工作表,写入器将返回一个DirectoryInterface实例。

从CSV构建电子表格

use Spreadsheet\{
    Reader\CsvReader,
    File\Csv,
    Position
};
use Innmind\Filesystem\Stream\StringStream;

$reader = new CsvReader(';', true);
$spreadsheet = $reader->read(
    new Csv(
        'sheet.csv',
        new StringStream(<<<CSV
A;B
A1;B1
CSV
        )
    )
);

$spreadsheet->name(); //sheet
$spreadsheet->get('sheet')->name(); //sheet
$spreadsheet->get('sheet')->get(new Position('A', 1))->value(); //A1
$spreadsheet->get('sheet')->get(new Position('B', 1))->value(); //B1

如果您向读取器提供一个DirectoryInterface实例,则每个文件都将成为您的电子表格中的一个工作表。