PhpSpreadsheet supports reading and writing multiple spreadsheet file formats, allowing you to work with files from various sources and save your data in the format that best suits your needs.
Not all formats support all PhpSpreadsheet features. For detailed feature compatibility, consult the Features Cross-reference in the PhpSpreadsheet documentation.
Chart Export: Charts can be exported to HTML and PDF formats if you install a chart rendering library (jpgraph or mitoteam/jpgraph). Otherwise, charts are defined in XLSX files but not rendered in HTML/PDF output.
Office Open XML is the primary format for PhpSpreadsheet. It provides the best support for all features.
use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Writer\Xlsx;// Reading$spreadsheet = IOFactory::load('file.xlsx');// Writing$writer = new Xlsx($spreadsheet);$writer->save('output.xlsx');
BIFF8 (Binary Interchange File Format) is the legacy Excel format.
use PhpOffice\PhpSpreadsheet\Reader\Xls;use PhpOffice\PhpSpreadsheet\Writer\Xls as XlsWriter;// Reading$reader = new Xls();$spreadsheet = $reader->load('file.xls');// Writing$writer = new XlsWriter($spreadsheet);$writer->save('output.xls');
ODS is the open standard format used by LibreOffice Calc and OpenOffice.
use PhpOffice\PhpSpreadsheet\Reader\Ods;use PhpOffice\PhpSpreadsheet\Writer\Ods as OdsWriter;// Reading$reader = new Ods();$spreadsheet = $reader->load('file.ods');// Writing$writer = new OdsWriter($spreadsheet);$writer->save('output.ods');
use PhpOffice\PhpSpreadsheet\Reader\Csv;use PhpOffice\PhpSpreadsheet\Writer\Csv as CsvWriter;// Reading$reader = new Csv();$reader->setDelimiter(',');$reader->setEnclosure('"');$reader->setSheetIndex(0);$spreadsheet = $reader->load('file.csv');// Writing$writer = new CsvWriter($spreadsheet);$writer->setDelimiter(',');$writer->setEnclosure('"');$writer->setLineEnding("\r\n");$writer->setSheetIndex(0);$writer->save('output.csv');
Key Features:
Plain text, human-readable
Universal compatibility
Small file size
Easy to parse
Limitations:
Single worksheet only
No formatting (colors, fonts, etc.)
No formulas (values only)
No images or charts
Data types may be ambiguous
CSV Options:
$reader = new Csv();$reader->setDelimiter(';'); // Change delimiter$reader->setEnclosure('"'); // Quote character$reader->setEscapeCharacter('\\'); // Escape character$reader->setInputEncoding('UTF-8'); // Character encoding$writer = new CsvWriter($spreadsheet);$writer->setDelimiter(',');$writer->setEnclosure('"');$writer->setLineEnding("\r\n"); // Windows line endings$writer->setUseBOM(true); // Add UTF-8 BOM$writer->setIncludeSeparatorLine(false);
HTML format allows you to display spreadsheets on the web.
use PhpOffice\PhpSpreadsheet\Reader\Html;use PhpOffice\PhpSpreadsheet\Writer\Html as HtmlWriter;// Reading$reader = new Html();$spreadsheet = $reader->load('table.html');// Writing$writer = new HtmlWriter($spreadsheet);$writer->save('output.html');
Writing Options:
$writer = new HtmlWriter($spreadsheet);$writer->setSheetIndex(0); // Which sheet to export$writer->setImagesRoot('images/'); // Path for images$writer->setEmbedImages(false); // Embed images as base64$writer->setUseInlineCss(true); // Use inline styles
use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Writer\Pdf\Dompdf;use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;use PhpOffice\PhpSpreadsheet\Writer\Pdf\Tcpdf;// Register your chosen PDF writerIOFactory::registerWriter('Pdf', Dompdf::class);// orIOFactory::registerWriter('Pdf', Mpdf::class);// orIOFactory::registerWriter('Pdf', Tcpdf::class);// Create and save$writer = IOFactory::createWriter($spreadsheet, 'Pdf');$writer->save('output.pdf');
PDF Options:
$writer = IOFactory::createWriter($spreadsheet, 'Pdf');$writer->setSheetIndex(0); // Which sheet to export$writer->writeAllSheets(); // Export all sheets
// Create reader for specific format$reader = IOFactory::createReader('Xlsx');$spreadsheet = $reader->load('file.xlsx');// Create writer for specific format$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');$writer->save('output.xlsx');