| 
<?phpnamespace Jackbooted\Util;
 
 use \Jackbooted\DB\DB;
 use \Jackbooted\DB\DBTable;
 /**
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved.
 *
 * Written by Brett Dutton of Jackbooted Software
 * brett at brettdutton dot com
 *
 * This software is written and distributed under the GNU General Public
 * License which means that its source code is freely-distributed and
 * available to the general public.
 *
 */
 class XLS extends \Jackbooted\Util\JB {
 public static function output ( $table, $name='' ) {
 error_reporting ( 0 );
 if ( ! is_object ( $table ) && ! is_array ( $table ) ) exit;
 if ( $name == '' ) $name = 'output' . Invocation::next();
 if ( ! preg_match ( '/^.*\.xls$/i', $name ) ) $name .= '.xls';
 
 $fileName = PHPExt::getTempDir() . '/' . $name;
 
 $workbook = new Spreadsheet_Excel_Writer ( $fileName );
 $worksheet = &$workbook->addWorksheet ( basename ( $name ) );
 $rowIdx = 0;
 
 if ( $table instanceof DBTable  || is_array( $table ) ) {
 foreach ( $table as $row ) {
 
 if ( $rowIdx == 0 ) {
 foreach ( array_keys ( $row ) as $col => $heading ) {
 $worksheet->write ( $rowIdx, $col, $heading );
 }
 $rowIdx ++;
 }
 
 foreach ( array_values ( $row ) as $col => $val ) {
 $worksheet->write ( $rowIdx, $col, $val );
 }
 $rowIdx ++;
 }
 }
 else if ( $table instanceof PDOStatement ) {
 while ( $row = $table->fetch ( DB::FETCH_ASSOC ) ) {
 
 if ( $rowIdx == 0 ) {
 foreach ( array_keys ( $row ) as $col => $heading ) {
 $worksheet->write ( $rowIdx, $col, $heading );
 }
 $rowIdx ++;
 }
 
 foreach ( array_values ( $row ) as $col => $val ) {
 $worksheet->write ( $rowIdx, $col, $val );
 }
 $rowIdx ++;
 }
 }
 
 $workbook->close ();
 $workbook->send ( $name );
 $fp = fopen ( $fileName, 'rb' );
 fpassthru ( $fp );
 fclose ( $fp );
 unlink ( $fileName );
 exit;
 }
 }
 |