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: /**
30: * PHPExcel_Cell_DataType
31: *
32: * @category PHPExcel
33: * @package PHPExcel_Cell
34: * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35: */
36: class PHPExcel_Cell_DataType
37: {
38: /* Data types */
39: const TYPE_STRING2 = 'str';
40: const TYPE_STRING = 's';
41: const TYPE_FORMULA = 'f';
42: const TYPE_NUMERIC = 'n';
43: const TYPE_BOOL = 'b';
44: const TYPE_NULL = 'null';
45: const TYPE_INLINE = 'inlineStr';
46: const TYPE_ERROR = 'e';
47:
48: /**
49: * List of error codes
50: *
51: * @var array
52: */
53: private static $_errorCodes = array(
54: '#NULL!' => 0,
55: '#DIV/0!' => 1,
56: '#VALUE!' => 2,
57: '#REF!' => 3,
58: '#NAME?' => 4,
59: '#NUM!' => 5,
60: '#N/A' => 6
61: );
62:
63: /**
64: * Get list of error codes
65: *
66: * @return array
67: */
68: public static function getErrorCodes() {
69: return self::$_errorCodes;
70: }
71:
72: /**
73: * DataType for value
74: *
75: * @deprecated Replaced by PHPExcel_Cell_IValueBinder infrastructure, will be removed in version 1.8.0
76: * @param mixed $pValue
77: * @return string
78: */
79: public static function dataTypeForValue($pValue = null) {
80: return PHPExcel_Cell_DefaultValueBinder::dataTypeForValue($pValue);
81: }
82:
83: /**
84: * Check a string that it satisfies Excel requirements
85: *
86: * @param mixed Value to sanitize to an Excel string
87: * @return mixed Sanitized value
88: */
89: public static function checkString($pValue = null)
90: {
91: if ($pValue instanceof PHPExcel_RichText) {
92: // TODO: Sanitize Rich-Text string (max. character count is 32,767)
93: return $pValue;
94: }
95:
96: // string must never be longer than 32,767 characters, truncate if necessary
97: $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 32767);
98:
99: // we require that newline is represented as "\n" in core, not as "\r\n" or "\r"
100: $pValue = str_replace(array("\r\n", "\r"), "\n", $pValue);
101:
102: return $pValue;
103: }
104:
105: /**
106: * Check a value that it is a valid error code
107: *
108: * @param mixed Value to sanitize to an Excel error code
109: * @return string Sanitized value
110: */
111: public static function checkErrorCode($pValue = null)
112: {
113: $pValue = (string) $pValue;
114:
115: if ( !array_key_exists($pValue, self::$_errorCodes) ) {
116: $pValue = '#NULL!';
117: }
118:
119: return $pValue;
120: }
121:
122: }
123: