Skip to content
forked from imTigger/OneExcel

PHP Excel read/write abstraction layer, support PHPExcel, LibXL and Spout

License

Notifications You must be signed in to change notification settings

guoyu07/OneExcel

 
 

Repository files navigation

OneExcel

Build Status Latest Stable Version Latest Unstable Version Total Downloads License

PHP Excel read/write abstraction layer, support PHPExcel, LibXL, Spout and PHP fputcsv/fgetcsv

Targets to simplify server compatibility issue between Excel libraries and performance issue in huge files.

Ideal for simple-formatted but huge spreadsheet files such as reporting.

Installation

Requirements

  • PHP >= 5.6.4
  • php_zip, php_xmlreader, php_simplexml enabled
  • (Recommended) LibXL installed & php_excel enabled

Composer

OneExcel can only be installed from Composer.

Run the following command:

$ composer require imtigger/oneexcel

Writer

Documentations

Basic Usage

$excel = OneExcelWriterFactory::create()
        ->toFile('excel.xlsx')
        ->make();
        
$excel->writeCell(1, 0, 'Hello');
$excel->writeCell(2, 1, 'World');
$excel->writeCell(3, 2, 3.141592653, ColumnType::NUMERIC);
$excel->writeRow(4, ['One', 'Excel']);

$excel->output();

Advanced Usage

$excel = OneExcelWriterFactory::create()
        ->fromFile('template.xlsx', Format::XLSX)
        ->toStream('excel.csv', Format::CSV)
        ->withDriver(Driver::SPOUT)
        ->make();
        
$excel->writeCell(1, 0, 'Hello');
$excel->writeCell(2, 1, 'World');
$excel->writeCell(3, 2, 3.141592653, ColumnType::NUMERIC);
$excel->writeRow(4, ['One', 'Excel']);

$excel->output();

Reader

(Version 0.6+)

$excel = OneExcelReaderFactory::create()
        ->fromFile('excel.xlsx')
        // ->withDriver(Driver::SPOUT)
        ->make();
        
foreach ($excel->row() as $row) {
    //
}

$excel->close();

Known Issues

  • Spout reader driver output empty rows as SINGLE column (Upstream problem?)
  • Spout do not support random read/write rows (Upstream limitation, Won't fix)
  • Spout do not support formula (Upstream limitation, Won't fix)
  • fputcsv driver ignores all ColumnType::* (File-type limitation, Won't fix)

TODO

  • Register to Packagist
  • Emulate writeCell() behavior for Spout/fputcsv writer
  • OneExcelWriterFactory auto create writers base on input/output format
  • Refactor: Move constants to separate class
  • Implement load() for SpoutWriter and FPutCsvWriter
  • Implement $writer->writeRow($arr)
  • Implement ColumnType::NUMERIC, ColumnType::FORMULA for all drivers
  • Implement ColumnType::DATE, ColumnType::TIME, ColumnType::DATETIME for all drivers
  • Implement ColumnType::* for Spout driver (Require upstream update)
  • Implement sheet support
  • Implement Reader
  • Add PHPUnit tests

About

PHP Excel read/write abstraction layer, support PHPExcel, LibXL and Spout

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%