Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

read xlsx file using php [closed]

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?

like image 462
Hailwood Avatar asked Jul 15 '10 03:07

Hailwood


2 Answers

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");
}
like image 67
Mark Baker Avatar answered Sep 23 '22 21:09

Mark Baker


It depends on what you mean by "read."

Office XML files are just zip files containing one or more XML documents. Any old XML parser should be able to read them.

Doing something useful, interesting and productive with the data, on the other hand, may take some effort.

like image 35
Charles Avatar answered Sep 21 '22 21:09

Charles