Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to generate an Excel document with multiple worksheets from PHP?

I want to generate an MS Excel file from PHP. I know one can do something like this:

header ( "Content-type: application/vnd.ms-excel" ); header ( "Content-Disposition: attachment; filename=foo_bar.xls" ); 

But it will generate a file with just one Sheet. What I want is generating a file with multiple sheets. How can I do that? Maybe there's a third party library, but I haven't found too much.

like image 597
Cristian Avatar asked Jul 16 '10 22:07

Cristian


2 Answers

Try looking at PHPExcel. This is a simple example that creates an Excel file with two sheets:

<?php require_once 'PHPExcel.php'; require_once 'PHPExcel/IOFactory.php';  // Create new PHPExcel object $objPHPExcel = new PHPExcel();  // Create a first sheet, representing sales data $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Something');  // Rename sheet $objPHPExcel->getActiveSheet()->setTitle('Name of Sheet 1');  // Create a new worksheet, after the default sheet $objPHPExcel->createSheet();  // Add some data to the second sheet, resembling some different data types $objPHPExcel->setActiveSheetIndex(1); $objPHPExcel->getActiveSheet()->setCellValue('A1', 'More data');  // Rename 2nd sheet $objPHPExcel->getActiveSheet()->setTitle('Second sheet');  // Redirect output to a client’s web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="name_of_file.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); 
like image 140
Mark Baker Avatar answered Sep 22 '22 14:09

Mark Baker


If you mean like have your PHP script create an Excel file, write some stuff to it on any sheet, etc, then offer that up for the client to download, you can just use PHP's built-in COM extension. See: http://us2.php.net/manual/en/class.com.php for all sorts of examples. However, you will need Excel (or a clone like OpenOffice) installed on the server. If you don't, perhaps Mark Baker's answer above will work instead without it.

like image 33
bob-the-destroyer Avatar answered Sep 18 '22 14:09

bob-the-destroyer