Wat zijn de belangrijkste verschillen tussen phpepexcel en phpspreadheet?

In het project van phpoffice zijn twee projecten geassocieerd met spreadsheet-bestandsindelingen:

phpepexcel

Phpexcel is een bibliotheek geschreven in Pure PHP en het leveren van een reeks klassen waarmee u kunt schrijven naar en lezen van verschillende spreadsheetbestandsindelingen, zoals Excel (BIFF) .XLS, Excel 2007 (OfficeOpenxml) .XLSX, CSV, Libre / OpenOffice Calc .ods, Gnumeric, PDF, HTML, … Dit project is gebouwd rond de OpenXML-standaard en PHP van Microsoft.

en

phpspreadsheets

PhPSPreadheet is een bibliotheek geschreven in Pure PHP en het leveren van een set klassen waarmee u kunt lezen en om te schrijven naar verschillende spreadsheet-bestandsindelingen, zoals Excel en LibreOffice Calc.

Wat zijn de belangrijkste verschillen tussen hen?


Antwoord 1, Autoriteit 100%

Phpexcel is al vele jaren gehandhaafd als een bibliotheek om al vele jaren met Spreadsheet-bestanden te werken, en is geklaagd door ondersteuning te houden voor oudere versies van PHP (& GT; = 5.2) waardoor het erg moeilijk is om vooruit te komen en het te verbeteren. Het is een stabiele bibliotheek, maar zal niet verder worden ontwikkeld.

PhPSPreadheet is de nieuwste versie van phpexcel en grote delen ervan zijn herschreven om te profiteren van de nieuwere kenmerken van PHP. Met behoud van alle functionaliteit van PHPEXCEL, vereist het een minimale PHP-versie van 5.5 (en spoedig dat wordt gevallen om minimaal 5.6 te verlangen).

De wijziging in de bibliotheeknaam was om het feit te weerspiegelen dat het niet beperkt is tot Excel-spreadsheets; Maar ondersteunt een breder scala aan spreadsheet-bestandsindelingen.

BEWERK 2020:

PHP Excel is officieel beëindigd in 2017 en permanent gearchiveerd in 2019.

PHP Excel wordt al jaren niet meer onderhouden en mag niet meer gebruikt worden. Alle gebruikers moeten migreren naar zijn directe opvolger PhpSpreadsheet, of een anderalternatief.


Antwoord 2, autoriteit 17%

Naast het antwoord van Mark Baker’shierboven, zijn er talloze architecturale en syntactische wijzigingen in hoe de nieuwe PhpSpreadsheet-bibliotheek is gebruikt.

Houd er eerst rekening mee dat er een meegeleverde migratietool is die veel van dePhpExcel -naar- PhpSpreadsheetsyntactische wijzigingen uitvoert voor jij.

 

Niet-uitputtende samenvatting van wijzigingen:

(1) Belangrijkste wijziging: PhpSpreadsheet is afhankelijk van de installatie van Composer.

Sterk geïnspireerd door de npm van node en de bundel van ruby, is Composer geen pakketbeheerder in dezelfde zin als Yum of Apt. Hoewel het om “pakketten” en/of bibliotheken gaat, is het een meer pure afhankelijkheidsmanager, omdat het afhankelijkheden per project beheert en ze in een map (meestal “leverancier” genoemd) binnen uw project installeert. Standaard installeert het niets wereldwijd. (Het ondersteunt echter voor het gemak een “globaal” project via het globale commando.)

Het is mogelijk om PhpSpreadsheet te gebruiken zonder Composer, en hier zijn enkele gedachten over hoe u dat kunt doen. Hier zijn meer gedachten rechtstreeks van de mavensover hetzelfde onderwerp.

FWIW, ik opende een ticket met mijn webhost en in 10 minuten ontvangen een Antwoord dat componist was geïnstalleerd op onze gedeelde hosting (groen plan, voor degenen die zich afvragen). Niet zeggen dat je hetzelfde geluk zult hebben, maar misschien zal de anekdotische info nuttig zijn. Het waard om een ​​poging te geven met je webhost.

(2) Namespaces werden geïntroduceerd

De codezijde van PhPSPreadheet is ook geëvolueerd sinds Phpexcel ook. Overwegende dat de ingangspuntklasse van PHPEXCEL – klassen / phpexcel.php – zijn naamgenoot weerspiegelde, PHPSPREADBEET omvat het bestand AutoLoad.php in de root van de map Vendor. Het maakt ook gebruik van enkele naamruimten om de codering te vereenvoudigen:

<?php
   use PhpOffice\PhpSpreadsheet\IOFactory;
   use PhpOffice\PhpSpreadsheet\Spreadsheet;
   require_once 'vendor/autoload.php';

(3) lezers en schrijvers werden hernoemd

(4) Reader / schrijver korte namen werden aanzienlijk gewijzigd. Bijvoorbeeld:

'Excel2003XML' ==> 'Xml' *the leading capital letter is mandatory !*
'Excel2007'    ==> 'Xlsx'
'Excel5'       ==> 'Xls'
'HTML'         ==> 'Html'
'CSV'          ==> 'Csv'   etc.

Heeft u opgemerkt dat de eerste letter wordt geactiveerd? Verplicht.

(5) iOfactorire methoden zijn vereenvoudigd:

PHPExcel_IOFactory::getSearchLocations()  ==> replaced by ==>  IOFactory::registerReader()
PHPExcel_IOFactory::setSearchLocations()  ==> replaced by ==>  IOFactory::registerWriter()
PHPExcel_IOFactory::addSearchLocation()

Bijvoorbeeld,

\PHPExcel_IOFactory::addSearchLocation($type, $location, $classname);   <=== PhpExcel
\PhpOffice\PhpSpreadsheet\IOFactory::registerReader($type, $classname); <=== PhpSpreadsheet

(6) Andere wijzigingen / Waardeverminderingen:

Worksheet::duplicateStyleArray()
DataType::dataTypeForValue()
Conditional::get/setCondition()
Worksheet::get/setDefaultStyle()
Worksheet::get/setSelectedCell()
Writer\Xls::setTempDir() <==== functionality dropped

(7) De klasse PHPExcel_Autoloader werd volledig verwijderd en wordt vervangen door componist autoloading.

(8) PDF bibliotheken moeten via componist worden geïnstalleerd. De PHPExcel_Settings::get/setPdfRenderer()methoden werden verwijderd en vervangen door IOFactory :: registerWriter () in plaats.

(9) Bij het afleggen Charts HTML of PDF-uitgangen, het proces werd ook vereenvoudigd. En terwijl JPGraph ondersteuning is nog steeds beschikbaar is, is het helaas niet up-to-date voor de laatste PHP-versies en het zal verschillende waarschuwingen genereren.

(10) Steun voor PclZip werden ten gunste van de meer complete en moderne PHP extensie ZipArchive gedaald. Zo veel wijzigingen in deze klassen.

(11) Cell caching werd zwaar refactored hefboomwerking PSR-16. Dat betekent dat de meeste klassen in verband met die functie werden verwijderd.

(12) Array toetsen gebruikt voor styling zijn gestandaardiseerd voor een meer coherente ervaring. Gebruikt thans dezelfde formulering en behuizing als getter en setter

(13) Methoden om coördinaten PHPExcel_Cellmanipuleren werden geëxtraheerd met een specifieke nieuwe klasse \PhpOffice\PhpSpreadsheet\Cell\Coordinate. De methoden zijn onder andere:

absoluteCoordinate()
absoluteReference()
columnIndexFromString()
coordinateFromString()
buildRange()
... and half-a-dozen more ...

(14) Kolomindexen zijn nu gebaseerd op 1. Dus kolom A is de index 1. Dit komt overeen met rijen die beginnen bij 1 en Excel-functie COLUMN() die 1 retourneert voor kolom A.

(15) Standaardwaarden voor veel methoden zijn verwijderd wanneer dit niet logisch was. Gewoonlijk zouden setter-methoden geen standaardwaarden moeten hebben.

(16) Voorwaardelijk geretourneerde cel verwijderd… Het is niet langer mogelijk om het type geretourneerde waarde te wijzigen. Het retourneert altijd het werkblad en nooit de cel of regel, in methoden zoals: Worksheet::setCellValue(), Worksheet::setCellValueExplicit(), enz. Voor bijvoorbeeld:

$cell = $worksheet->setCellValue('A1', 'value', true);  <==== PhpExcel
$cell = $worksheet->getCell('A1')->setValue('value');   <==== PhpSpreadsheet

Raadpleeg het brondocument hieronder voor meer informatie over deze wijzigingen.

Referenties:

PhpSpreadsheet-documenten – Migratie van PhpExcel– readthedocs. io

Overschakelen van PhpExcel naar PhpSpreadsheetdoor Rob Gravelle uit Ottawa

Other episodes