source: sourcecode/application/libraries/PHPExcel/Cell/DefaultValueBinder.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 3.3 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20 *
21 * @category   PHPExcel
22 * @package    PHPExcel_Cell
23 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
25 * @version    1.8.0, 2014-03-02
26 */
27
28
29/** PHPExcel root directory */
30if (!defined('PHPEXCEL_ROOT')) {
31    /**
32     * @ignore
33     */
34    define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
35    require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
36}
37
38
39/**
40 * PHPExcel_Cell_DefaultValueBinder
41 *
42 * @category   PHPExcel
43 * @package    PHPExcel_Cell
44 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
45 */
46class PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
47{
48    /**
49     * Bind value to a cell
50     *
51     * @param  PHPExcel_Cell  $cell   Cell to bind value to
52     * @param  mixed          $value  Value to bind in cell
53     * @return boolean
54     */
55    public function bindValue(PHPExcel_Cell $cell, $value = null)
56    {
57        // sanitize UTF-8 strings
58        if (is_string($value)) {
59            $value = PHPExcel_Shared_String::SanitizeUTF8($value);
60        }
61
62        // Set value explicit
63        $cell->setValueExplicit( $value, self::dataTypeForValue($value) );
64
65        // Done!
66        return TRUE;
67    }
68
69    /**
70     * DataType for value
71     *
72     * @param   mixed  $pValue
73     * @return  string
74     */
75    public static function dataTypeForValue($pValue = null) {
76        // Match the value against a few data types
77        if (is_null($pValue)) {
78            return PHPExcel_Cell_DataType::TYPE_NULL;
79
80        } elseif ($pValue === '') {
81            return PHPExcel_Cell_DataType::TYPE_STRING;
82
83        } elseif ($pValue instanceof PHPExcel_RichText) {
84            return PHPExcel_Cell_DataType::TYPE_INLINE;
85
86        } elseif ($pValue{0} === '=' && strlen($pValue) > 1) {
87            return PHPExcel_Cell_DataType::TYPE_FORMULA;
88
89        } elseif (is_bool($pValue)) {
90            return PHPExcel_Cell_DataType::TYPE_BOOL;
91
92        } elseif (is_float($pValue) || is_int($pValue)) {
93            return PHPExcel_Cell_DataType::TYPE_NUMERIC;
94
95        } elseif (preg_match('/^\-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)$/', $pValue)) {
96            return PHPExcel_Cell_DataType::TYPE_NUMERIC;
97
98        } elseif (is_string($pValue) && array_key_exists($pValue, PHPExcel_Cell_DataType::getErrorCodes())) {
99            return PHPExcel_Cell_DataType::TYPE_ERROR;
100
101        } else {
102            return PHPExcel_Cell_DataType::TYPE_STRING;
103
104        }
105    }
106}
Note: See TracBrowser for help on using the repository browser.