I have a requirements to read XLS files (not xlsx) using PhpSpreadsheet and I having trouble. I tried this (as the documentation say but…)
require 'vendor/autoload.php'; use PhpOfficePhpSpreadsheetSpreadsheet; $spreadsheet = PhpOfficePhpSpreadsheetIOFactory::load("lista.xls"); $worksheet = $spreadsheet->getActiveSheet(); echo '<table>' . PHP_EOL; foreach ($worksheet->getRowIterator() as $row) { echo '<tr>' . PHP_EOL; $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(FALSE); // This loops through all cells, // even if a cell value is not set. // By default, only cells that have a value // set will be iterated. foreach ($cellIterator as $cell) { echo '<td>' . $cell->getValue() . '</td>' . PHP_EOL; } echo '</tr>' . PHP_EOL; } echo '</table>' . PHP_EOL; echo "<br>fin";
but didn’t work (it worked with a xlsx file, but no with a xls file!)
Then I tried to open file differently:
$reader = new PhpOfficePhpSpreadsheetReaderXls(); $sheet = $reader->load("lista.xls");
but also doesn’t work…
I really need to solve this… please help! PS: I’ve tried BasicExcel & PHPExcel but also didn’t seem to work
Advertisement
Answer
I would check with your Client to see if they are using real Excel or some other spreadsheet.
If they are using some other spreadsheet and exporting using a “Export as Excel” functionality that may explain why its not being recognised by PHPSpreadsheet as any of the possible valid excel formats.
In which case, and depending what is in the spreadsheet, it may be worth asking them to export their spreadsheet as a csv
(comma delimited values) file, as that is such a simple format it should be a valid output. You could then read it using fgetcsv()
function calls instead of having to use PHPSpreadsheet.