Login   Register  
PHP Classes
elePHPant
Icontem

File: ExcelXMLTable.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Andrew Aculana  >  Excel XML Parser  >  ExcelXMLTable.php  >  Download  
File: ExcelXMLTable.php
Role: Class source
Content type: text/plain
Description: Table Class
Class: Excel XML Parser
Read and write data to Excel XML worksheets
Author: By
Last change: Updated Vesion
Date: 8 years ago
Size: 6,144 bytes
 

Contents

Class file image Download
<?php
/*
* ============================================================================
*
* @name ExcelXMLTable.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 'ExcelXMLRow.php';
include_once 
'ExcelXMLCell.php';

class 
ExcelXMLTable{
    
    
/**
     * Excel XML Table Attributes
     * @var Associative Array $Rows
     * @var Iterator $Iterator
     */
    
var $Rows;
    var 
$Iterator;
    var 
$Encoding;
#-----------------------------------------------------------------------------#

    /**
     * class constructor - initialize attributes
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @return null
     */    
    
function ExcelXMLTable(&$Data,$Encoding){
        
$this->Rows         =& $Data[0]['children']['Row'];
        
$this->Iterator  = new ExcelXMLArrayIterator($this->Rows);
        
$this->Encoding  =& $Encoding;
    }
#-----------------------------------------------------------------------------#

    /**
     * get the row count
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @return int
     */    
    
function getRowCount(){
        
        return 
$this->Iterator->length();
    }
#-----------------------------------------------------------------------------#

    /**
     * get the active row
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @return long - pointer to the active row
     */
    
function &getActiveRow(){
        
$active =& $this->Iterator->current();
        if(
$active){
            
$Row = new ExcelXMLRow($active,$Encoding);
            return 
$Row;
        }else{
            return 
NULL;
        }
    }
#-----------------------------------------------------------------------------#

    /**
     * get the next row
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @return long - pointer to the next row
     */
    
function &getNextRow(){
        
$next =& $this->Iterator->next();
        if(
$next){
            
$Row = new ExcelXMLRow($next,$Encoding);
            return 
$Row;
        }else{
            return 
NULL;
        }
    }
#-----------------------------------------------------------------------------#

    /**
     * get the first row
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @return long - pointer to the first row
     */
    
function &getFirstRow(){
        
$top =& $this->Iterator->top();
        if(
$top){
            
$Row = new ExcelXMLRow($top,$Encoding);
            return 
$Row;
        }else{
            return 
NULL;
        }
    }
#-----------------------------------------------------------------------------#

    /**
     * get the last row
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @return long - pointer to the next row
     */
    
function &getLastRow(){
        
        
$bottom =& $this->Iterator->bottom();
        if(
$bottom){
            
$Row = new ExcelXMLRow($bottom,$Encoding);
            return 
$Row;
        }else{
            return 
NULL;
        }
    }
#-----------------------------------------------------------------------------#

    /**
     * get row
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @param int $RowIndex
     * @return long - pointer to the next row
     */
    
function &getRow($RowIndex 0){
        
        return 
$this->Rows[$RowIndex];
    }
#-----------------------------------------------------------------------------#

    /**
     * get the cell by row col
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @param int $RowIndex
     * @param int $ColIndex
     * @return long - pointer to cell
     */
    
function &getCellByRowCol($RowIndex 1,$ColIndex 1){
        
$celladdress Utils::RowColToCell($RowIndex-1,$ColIndex-1);
        
$rowcolcell =& $this->Rows[--$RowIndex]['children']['Cell'];
         foreach(
$rowcolcell as $key => $val){
             
$celldata =& $rowcolcell[$key];
             
$Cell =& new ExcelXMLCell($celldata,$Encoding);
             if(
trim($celladdress) == trim($Cell->getCellAddress())){
                 return 
$Cell;
            }
         }
         return 
NULL;
    }
#-----------------------------------------------------------------------------#

    /**
     * get the cell by Cell Address Notation
     * 
     * @author Andrew A. Aculana
     * @access Public
     * @version 2.0
     * @copyright 2006-07-03
     * @param String $Address - cell address notation ("eg. A1B1")
     * @return long - pointer to cell
     */
    
function &getCellByAddress($Address ""){
        
preg_match("/([A-Za-z]*)?([0-9]*)/i",$Address,$RowCol);
        
$Row         = (int)$RowCol[2];
        
$Col         $RowCol[1];
        
$offset1 =0;
        if(
strlen($Col) == 2){
            
            
$offset1 ord($Col[1])-65;
            
$offset2  = (((ord($Col[0])-65)+1)*26)+$offset1;
        }else{
            
$offset2  ord($Col[0])-65;
        }
        return 
$this->getCellByRowCol($Row,$offset2+1);
    }
#-----------------------------------------------------------------------------#
}
?>