<?php
 
/*
 
* ============================================================================
 
*
 
* @name ExcelXMLCell.php
 
*
 
* @author Andrew A. 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
 
 */
 
 
 
class ExcelXMLCell{
 
    
 
    /**
 
     * Excel XML Cell Attributes
 
     * @var String $data
 
     */
 
     
 
    var $data;
 
    var $value;
 
    var $celladdress;
 
    var $Encoding;
 
#-----------------------------------------------------------------------------#    
 
 
    /**
 
     * class constructor - initialize attributes
 
     * 
 
     * @author Andrew A. Aculana
 
     * @access Public
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return null
 
     */
 
    function ExcelXMLCell(&$Data,&$Encoding){
 
        $this->data =& $Data;
 
        $this->Encoding =& $Encoding;
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * set the cell value
 
     * 
 
     * @author Andrew A. Aculana
 
     * @access Public
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @param int $Column
 
     * @return null
 
     */
 
    function setValue($value = ""){
 
        if(isset($this->data['children']['Data'][0]['values'][0])){
 
            if(isset($this->data['children']['Data'][0]['attrs']['ss:Type'])){
 
                $ExistingType = $this->data['children']['Data'][0]['attrs']['ss:Type'];
 
            }elseif(isset($this->data['children']['Data'][0]['attrs']['ss:Type'])){
 
                $ExistingType = $this->data['children']['Data'][0]['attrs']['Type'];
 
            }
 
            switch($ExistingType){
 
                case 'String':
 
                    break;
 
                case 'Number':
 
                    if(!is_numeric($value)){
 
                        ExcelXMLError::raiseError("Invalid Value for Cell ".$this->getCellAddress()." of type ".$ExistingType,E_USER_WARNING);
 
                    }
 
                    break;
 
                case 'Boolean':
 
                    if(!is_int($value)){
 
                        ExcelXMLError::raiseError("Invalid Value for Cell ".$this->getCellAddress()." of type ".$ExistingType,E_USER_WARNING);
 
                    }
 
                    break;
 
                case 'DateTime':
 
                    /* date */
 
                    if(preg_match("/-/i", $value)){
 
                        $Date = date('Y-m-d',strtotime($value));
 
                        $value = $Date."T00:00:00.000";
 
                    /* time */
 
                    }elseif(preg_match("/:/i", $value)){
 
                        $value = "1900-01-01T".date('H:i:s.000',strtotime($value));
 
                    }else{
 
                        /* invalid cell value for datetime */
 
                        ExcelXMLError::raiseError("Invalid Value for Cell ".$this->getCellAddress()." of type ".$ExistingType,E_USER_WARNING);
 
                    }
 
                    break;
 
            }
 
            $this->data['children']['Data'][0]['values'][0] = $value;
 
        }else{
 
            /* unknown cell or cell does not exist */
 
            ExcelXMLError::raiseError("Error: Cell ".$this->getCellAddress()." does not exist",E_USER_WARNING);
 
        }
 
        $this->value =& $value;
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get the current cell value
 
     * 
 
     * @author Andrew A. Aculana
 
     * @access Public
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return int
 
     */
 
    function &getValue(){
 
        if(isset($this->data['children']['Data'][0]['values'][0])){
 
            $this->value =& $this->data['children']['Data'][0]['values'][0];
 
        }else{
 
            /* unknown cell format */
 
            return "";
 
        }
 
        return $this->value;
 
    }
 
#-----------------------------------------------------------------------------#
 
 
    /**
 
     * get the current cell address
 
     * 
 
     * @author Andrew A. Aculana
 
     * @access Public
 
     * @version 2.0
 
     * @copyright 2006-07-03
 
     * @return int
 
     */
 
    function getCellAddress(){
 
        if(isset($this->data['CellAddress']['A1'])){
 
            $this->celladdress = $this->data['CellAddress']['A1'];
 
        }else{
 
            ExcelXMLError::raiseError("Error: Cell ".$this->getCellAddress()." does not exist",E_USER_WARNING);
 
        }
 
        return $this->celladdress;
 
    }
 
}
 
?>
 
 |