Can anyone reccomend a good library for reading xlsx files using php?
ive looked at phpexcel, but from the examples it seems it only supports writing?
I'd look at PHPExcel again. PHPExcel has writers for Excel5 (xls), Excel2007 (xlsx), CSV, HTML, and PDF; and readers for Excel5 (xls), Excel2007 (xlsx), Excel 2003 XML, CSV, SYLK, and Open Office Calc
It's all quite clear in the documentation
EDIT (quoting from the manual)
There are 2 methods for reading in a file into PHPExcel: using automatic file type resolving or explicitly.
Automatic file type resolving checks the different PHPExcel_Reader_IReader distributed with PHPExcel. If one of them can load the specified file name, the file is loaded using that PHPExcel_Reader_IReader. Explicit mode requires you to specify which PHPExcel_Reader_IReader should be used.
You can create a PHPExcel_Reader_IReader instance using PHPExcel_IOFactory in automatic file type resolving mode using the following code sample:
$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx");
A typical use of this feature is when you need to read files uploaded by your users, and you don’t know whether they are uploading xls or xlsx files.
If you need to set some properties on the reader, (e.g. to only read data, see more about this later), then you may instead want to use this variant:
$objReader = PHPExcel_IOFactory::createReaderForFile("05featuredemo.xlsx");
$objReader->setReadDataOnly(true);
$objReader->load("05featuredemo.xlsx");
You can create a PHPExcel_Reader_IReader instance using PHPExcel_IOFactory in explicit mode using the following code sample:
$objReader = PHPExcel_IOFactory::createReader("Excel2007");
$objPHPExcel = $objReader->load("05featuredemo.xlsx");
EDIT (Personal preference)
It's also worthwhile wrapping your loader in a try/catch
$fileName = '01simple.xlsx';
try {
$objPHPExcel = PHPExcel_IOFactory::load($fileName);
} catch (Exception $e) {
die("Error loading file: ".$e->getMessage()."<br />\n");
}