How to open an Excel file with PHPExcel for both reading and writing?

Petruza picture Petruza · Jan 10, 2012 · Viewed 83.1k times · Source

I'm using the PHPExcel library, and I'm creating xls objects either for writing or for reading:

PHPExcel_IOFactory::createReaderForFile('file.xlsx')
PHPExcel_IOFactory::createWriter('Excel2007')

How can I open an XLSX file for reading and writing?

Answer

Mark Baker picture Mark Baker · Jan 10, 2012

You load a file into PHPExcel using a reader and the load() method, then save that file using a writer and the save() method... but PHPExcel itself is unaware of the source of the PHPExcel object... it doesn't care whether you have loaded it from a file (or what type of file) or created it by hand.

As such, there is no concept of "opening for read/write". You simply read the file by name, and save to the same filename. That will overwrite the original file with any changes that you have made in your script.

EDIT

Example

error_reporting(E_ALL);
set_time_limit(0);

date_default_timezone_set('Europe/London');
set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');

include 'PHPExcel/IOFactory.php';

$fileType = 'Excel5';
$fileName = 'testFile.xls';

// Read the file
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($fileName);

// Change the file
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Hello')
            ->setCellValue('B1', 'World!');

// Write the file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save($fileName);

And can I suggest that you read the documentation, and look at the sample code in /Tests