Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

102 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages