<?php
 
/*
 
* ============================================================================
 
*
 
* @name ExcelXMLWorkbook.php
 
*
 
* @author andrew.aculana
 
* @version 2.0
 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
 
* @date 2006-07-03
 
*
 
* ============================================================================
 
*
 
* License:    GNU Lesser General Public License (LGPL)
 
*
 
* Copyright (c) 2004 LINK2SUPPORT INC.  All rights reserved.
 
*
 
* This file is part of the L2S Online Application Framework
 
*
 
* 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
*
 
* ============================================================================
 
*/
 
 
/**
 
 * @package ExcelXMLParser
 
 * @subpackage ExcelXMLParser
 
 */
 
 
 
include_once 'ExcelXMLArrayIterator.php';
 
include_once 'ExcelXMLWorksheet.php';
 
include_once 'ExcelXMLDocumentProperties.php';
 
     
 
class ExcelXMLWorkbook{
 
    
 
    /**
 
     * Excel XML Workbook Attributes
 
     * @var Associative Array $Worksheet
 
     * @var Worksheet $Worksheet
 
     * @var Document $Document
 
     * @var Iterator $Iterator
 
     * @var Associative Array &Data
 
     * @var Integer $WorksheetIndex
 
     * @var String $Encoding
 
     */
 
    var $Worksheet;
 
    var $Document;
 
    var $Iterator;
 
    var $Data;
 
    var $WorksheetIndex;
 
    var $Encoding;
 
    
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * class constructor - initialize attributes
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return null
 
     */
 
    function ExcelXMLWorkbook(&$Data,&$Encoding){
 
        /* handle to worksheet array */
 
        $this->Worksheet =& $Data['Workbook'][0]['children']['Worksheet'];
 
        /* handle to Document object */
 
        $this->Document     = new ExcelXMLDocumentProperties(&$Data);
 
        /* handle to Iterator object */
 
        $this->Iterator  = new ExcelXMLArrayIterator($this->Worksheet);
 
        $this->Data         =& $Data;
 
        $this->Encoding  =& $Encoding;
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get worksheet count
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return int
 
     */
 
    function getWorksheetCount(){
 
        
 
        return $this->Iterator->length();
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get the active worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return long - pointer to a worksheet
 
     */
 
    function &getActiveWorksheet(){
 
        $active =& $this->Iterator->current();
 
        if($active){
 
            $Worksheet = new ExcelXMLWorksheet($active,$this->Encoding);
 
            return $Worksheet;
 
        }else{
 
            return NULL;
 
        }
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get next worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return long - pointer to the next worksheet
 
     */
 
    function &getNextWorksheet(){
 
        $next =& $this->Iterator->next();
 
        if($next){
 
            $Worksheet = new ExcelXMLWorksheet($next,$this->Encoding);
 
            return $Worksheet;
 
        }else{
 
            return NULL;
 
        }
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get first worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return long - pointer to the first worksheet
 
     */
 
    function &getFirstWorksheet(){
 
        $top =& $this->Iterator->top();
 
        if($top){
 
            $Worksheet = new ExcelXMLWorksheet($top,$this->Encoding);
 
            return $Worksheet;
 
        }else{
 
            return NULL;
 
        }
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get last worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return long - pointer to the last worksheet
 
     */    
 
    function &getLastWorksheet(){
 
        $bottom =& $this->Iterator->bottom();
 
        if($bottom){
 
            $Worksheet = new ExcelXMLWorksheet($bottom,$this->Encoding);
 
            return $Worksheet;
 
        }else{
 
            return NULL;
 
        }
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get worksheet by worksheet name
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @param String $WorksheetName
 
     * @return long - pointer to a worksheet
 
     */
 
    function &getWorksheetByName($WorksheetName = ""){
 
        foreach($this->Worksheet as $key => $val){
 
            $value =& $this->Worksheet[$key];
 
            $WName = "";
 
            if(isset($val['attrs']['ss:Name'])){
 
                $WName = $val['attrs']['ss:Name'];
 
            }elseif($val['attrs']['Name']){
 
                $WName = $val['attrs']['Name'];
 
            }
 
            if(trim($WName) == trim($WorksheetName)){
 
                $Worksheet = new ExcelXMLWorksheet($value,$this->Encoding);
 
                return $Worksheet;
 
            }
 
        }
 
        return NULL;
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * set active worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @param Integer $WorksheetIndex
 
     * @return NULL
 
     */
 
    function setActiveSheet($WorksheetIndex = 0){
 
        if(isset($this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['ActiveSheet'][0]['values'][0])){
 
            $this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['ActiveSheet'][0]['values'][0] = $WorksheetIndex;
 
        }
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get active worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return Integer
 
     */
 
    function getActiveSheet(){
 
        if(isset($this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['ActiveSheet'][0]['values'][0])){
 
            return $this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['ActiveSheet'][0]['values'][0];
 
        }
 
        return NULL;
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * set first visible worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @param Integer $WorksheetIndex
 
     * @return NULL
 
     */
 
    function setFirstVisibleSheet($WorksheetIndex = 0){
 
        if(isset($this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['FirstVisibleSheet'][0]['values'][0])){
 
            $this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['FirstVisibleSheet'][0]['values'][0] = $WorksheetIndex;
 
        }
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get first visible worksheet
 
     * 
 
     * @author Andrew A. Aculana
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return Integer
 
     */
 
    function getFirstVisibleSheet(){
 
        if(isset($this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['FirstVisibleSheet'][0]['values'][0])){
 
            return $this->Data['Workbook'][0]['children']['ExcelWorkbook'][0]['children']['FirstVisibleSheet'][0]['values'][0];
 
        }
 
        return NULL;
 
    }
 
#-----------------------------------------------------------------------------#
 
}
 
?>
 
 |