PHP Classes

File: ExcelXMLTable.php

Recommend this page to a friend!
  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: 17 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);
    }
#-----------------------------------------------------------------------------#
}
?>