<?php
namespace 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;
}
}
|