How to read a xlsx file with Spout in PHP?
Spout is a PHP library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way.
1. Code:
<?php use Box\Spout\Reader\Common\Creator\ReaderFactory; use Box\Spout\Common\Type; require_once 'spout/src/Spout/Reader/Common/Creator/ReaderFactory.php'; require_once 'spout/src/Spout/Autoloader/autoload.php'; $fileInput = 'C:\readXlsxFile\example_upload_using_spout.xlsx'; $fileInputs = explode("\\", $fileInput); $fileName = end($fileInputs); $fileNames = explode(".", $fileName); $extension = end($fileNames); $fileUploadData = []; if (!empty($fileInput)) { if ($extension == 'xlsx') { #Read excel file by using ReadFactory object. $reader=ReaderFactory::createFromType(Type::XLSX); $reader->open($fileInput); $count = 1; $rows = array(); foreach ($reader->getSheetIterator() as $sheet) { foreach ($sheet->getRowIterator() as $row) { $rowAsArray = $row->toArray(); if ($count > 0) { $fileUploadData[] = $rowAsArray; } $count++; } echo "successfully uploaded!"; } $reader->close(); } else { echo "PLEASE SELECT A VALID EXCEL FILE"; } } else { echo "UPLOAD AN EXCEL FILE"; } ?> <p><?php echo($fileName) ?></p> <table > <?php foreach($fileUploadData as $rows){?> <tr> <?php foreach($rows as $value){ ?> <td><?php echo($value); ?></td> <?php } ?> </tr> <?php } ?> </table> <style> table, td, th { border: 1px solid; } table { width: 100%; border-collapse: collapse; } </style>
2. Example:
Input: example_upload_using_spout.xlsx
ID Name Description 1 Spout Spout is a PHP library to read and write spreadsheet files (CSV, XLSX and ODS) 2 ReaderFactory This creates an instance of the appropriate reader, given the type of the file to be read
Output:
ID | Name | Description |
1 | Spout | Spout is a PHP library to read and write spreadsheet files (CSV, XLSX and ODS) |
2 | ReaderFactory | This creates an instance of the appropriate reader, given the type of the file to be read |