2010-08-26 19:14:53 +00:00
< ? php
/**
* PHPExcel
*
2013-05-14 11:20:28 +00:00
* Copyright ( C ) 2006 - 2013 PHPExcel
2010-08-26 19:14:53 +00:00
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
*
* @ category PHPExcel
* @ package PHPExcel
2013-05-14 11:20:28 +00:00
* @ copyright Copyright ( c ) 2006 - 2013 PHPExcel ( http :// www . codeplex . com / PHPExcel )
2010-08-26 19:14:53 +00:00
* @ license http :// www . gnu . org / licenses / old - licenses / lgpl - 2.1 . txt LGPL
* @ version ##VERSION##, ##DATE##
*/
/** Error reporting */
error_reporting ( E_ALL );
2012-08-05 21:06:51 +00:00
ini_set ( 'display_errors' , TRUE );
ini_set ( 'display_startup_errors' , TRUE );
date_default_timezone_set ( 'Europe/London' );
define ( 'EOL' ,( PHP_SAPI == 'cli' ) ? PHP_EOL : '<br />' );
2010-08-26 19:14:53 +00:00
date_default_timezone_set ( 'Europe/London' );
2012-02-12 23:03:57 +00:00
/** Include PHPExcel */
2013-07-10 11:33:04 +00:00
require_once dirname ( __FILE__ ) . '/../Classes/PHPExcel.php' ;
2010-08-26 19:14:53 +00:00
// Create new PHPExcel object
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Create new PHPExcel object " , EOL ;
2010-08-26 19:14:53 +00:00
$objPHPExcel = new PHPExcel ();
2012-02-12 23:03:57 +00:00
// Set document properties
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Set document properties " , EOL ;
2010-08-26 19:14:53 +00:00
$objPHPExcel -> getProperties () -> setCreator ( " Maarten Balliauw " )
-> setLastModifiedBy ( " Maarten Balliauw " )
-> setTitle ( " Office 2007 XLSX Test Document " )
-> setSubject ( " Office 2007 XLSX Test Document " )
-> setDescription ( " Test document for Office 2007 XLSX, generated using PHP classes. " )
-> setKeywords ( " office 2007 openxml php " )
-> setCategory ( " Test result file " );
// Create a first sheet
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Add data " , EOL ;
2010-08-26 19:14:53 +00:00
$objPHPExcel -> setActiveSheetIndex ( 0 );
2012-08-05 21:06:51 +00:00
$objPHPExcel -> getActiveSheet () -> setCellValue ( 'A1' , " Cell B3 and B5 contain data validation... " )
-> setCellValue ( 'A3' , " Number: " )
-> setCellValue ( 'B3' , " 10 " )
-> setCellValue ( 'A5' , " List: " )
2013-10-17 10:19:20 +00:00
-> setCellValue ( 'B5' , " Item A " )
-> setCellValue ( 'A7' , " List #2: " )
-> setCellValue ( 'B7' , " Item #2 " )
-> setCellValue ( 'D2' , " Item #1 " )
-> setCellValue ( 'D3' , " Item #2 " )
-> setCellValue ( 'D4' , " Item #3 " )
-> setCellValue ( 'D5' , " Item #4 " )
-> setCellValue ( 'D6' , " Item #5 " )
;
2010-08-26 19:14:53 +00:00
// Set data validation
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Set data validation " , EOL ;
2010-08-26 19:14:53 +00:00
$objValidation = $objPHPExcel -> getActiveSheet () -> getCell ( 'B3' ) -> getDataValidation ();
$objValidation -> setType ( PHPExcel_Cell_DataValidation :: TYPE_WHOLE );
$objValidation -> setErrorStyle ( PHPExcel_Cell_DataValidation :: STYLE_STOP );
$objValidation -> setAllowBlank ( true );
$objValidation -> setShowInputMessage ( true );
$objValidation -> setShowErrorMessage ( true );
$objValidation -> setErrorTitle ( 'Input error' );
2012-02-12 23:03:57 +00:00
$objValidation -> setError ( 'Only numbers between 10 and 20 are allowed!' );
2010-08-26 19:14:53 +00:00
$objValidation -> setPromptTitle ( 'Allowed input' );
$objValidation -> setPrompt ( 'Only numbers between 10 and 20 are allowed.' );
$objValidation -> setFormula1 ( 10 );
$objValidation -> setFormula2 ( 20 );
$objValidation = $objPHPExcel -> getActiveSheet () -> getCell ( 'B5' ) -> getDataValidation ();
$objValidation -> setType ( PHPExcel_Cell_DataValidation :: TYPE_LIST );
$objValidation -> setErrorStyle ( PHPExcel_Cell_DataValidation :: STYLE_INFORMATION );
$objValidation -> setAllowBlank ( false );
$objValidation -> setShowInputMessage ( true );
$objValidation -> setShowErrorMessage ( true );
$objValidation -> setShowDropDown ( true );
$objValidation -> setErrorTitle ( 'Input error' );
$objValidation -> setError ( 'Value is not in list.' );
$objValidation -> setPromptTitle ( 'Pick from list' );
$objValidation -> setPrompt ( 'Please pick a value from the drop-down list.' );
2013-10-17 10:19:20 +00:00
$objValidation -> setFormula1 ( '"Item A,Item B,Item C"' ); // Make sure to put the list items between " and " if your list is simply a comma-separated list of values !!!
$objValidation = $objPHPExcel -> getActiveSheet () -> getCell ( 'B7' ) -> getDataValidation ();
$objValidation -> setType ( PHPExcel_Cell_DataValidation :: TYPE_LIST );
$objValidation -> setErrorStyle ( PHPExcel_Cell_DataValidation :: STYLE_INFORMATION );
$objValidation -> setAllowBlank ( false );
$objValidation -> setShowInputMessage ( true );
$objValidation -> setShowErrorMessage ( true );
$objValidation -> setShowDropDown ( true );
$objValidation -> setErrorTitle ( 'Input error' );
$objValidation -> setError ( 'Value is not in list.' );
$objValidation -> setPromptTitle ( 'Pick from list' );
$objValidation -> setPrompt ( 'Please pick a value from the drop-down list.' );
$objValidation -> setFormula1 ( '$D$2:$D$6' ); // Make sure NOT to put a range of cells or a formula between " and " !!!
2010-08-26 19:14:53 +00:00
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel -> setActiveSheetIndex ( 0 );
// Save Excel 2007 file
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Write to Excel2007 format " , EOL ;
2012-11-28 21:30:58 +00:00
$callStartTime = microtime ( true );
2010-08-26 19:14:53 +00:00
$objWriter = PHPExcel_IOFactory :: createWriter ( $objPHPExcel , 'Excel2007' );
$objWriter -> save ( str_replace ( '.php' , '.xlsx' , __FILE__ ));
2012-11-28 21:30:58 +00:00
$callEndTime = microtime ( true );
$callTime = $callEndTime - $callStartTime ;
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " File written to " , str_replace ( '.php' , '.xlsx' , pathinfo ( __FILE__ , PATHINFO_BASENAME )) , EOL ;
2012-11-28 21:30:58 +00:00
echo 'Call time to write Workbook was ' , sprintf ( '%.4f' , $callTime ) , " seconds " , EOL ;
// Echo memory usage
echo date ( 'H:i:s' ) , ' Current memory usage: ' , ( memory_get_usage ( true ) / 1024 / 1024 ) , " MB " , EOL ;
2010-08-26 19:14:53 +00:00
// Echo memory peak usage
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Peak memory usage: " , ( memory_get_peak_usage ( true ) / 1024 / 1024 ) , " MB " , EOL ;
2010-08-26 19:14:53 +00:00
// Echo done
2012-08-05 21:06:51 +00:00
echo date ( 'H:i:s' ) , " Done writing file " , EOL ;
echo 'File has been created in ' , getcwd () , EOL ;