Overview

Packages

  • JAMA
  • None
  • PHP
  • PHPExcel
    • CachedObjectStorage
    • Calculation
    • Cell
    • Chart
      • Renderer
    • Reader
      • Excel2007
      • Excel5
    • RichText
    • Settings
    • Shared
      • Escher
      • OLE
      • Trend
      • ZipArchive
    • Style
    • Worksheet
      • Drawing
    • Writer
      • 2007
      • CSV
      • Excel2007
      • Excel5
      • HTML
      • PDF

Classes

  • CholeskyDecomposition
  • Dao
  • DateTime
  • DateTimeZone
  • DOMNode
  • EigenvalueDecomposition
  • Elemento
  • Historial
  • Irradiacion
  • Latitud
  • MotorPhp
  • Panel
  • PclZip
  • Periodo
  • PHPExcel
  • PHPExcel_Autoloader
  • PHPExcel_Best_Fit
  • PHPExcel_CachedObjectStorage_APC
  • PHPExcel_CachedObjectStorage_CacheBase
  • PHPExcel_CachedObjectStorage_DiscISAM
  • PHPExcel_CachedObjectStorage_Igbinary
  • PHPExcel_CachedObjectStorage_Memcache
  • PHPExcel_CachedObjectStorage_Memory
  • PHPExcel_CachedObjectStorage_MemoryGZip
  • PHPExcel_CachedObjectStorage_MemorySerialized
  • PHPExcel_CachedObjectStorage_PHPTemp
  • PHPExcel_CachedObjectStorage_SQLite
  • PHPExcel_CachedObjectStorage_SQLite3
  • PHPExcel_CachedObjectStorage_Wincache
  • PHPExcel_CachedObjectStorageFactory
  • PHPExcel_CalcEngine_CyclicReferenceStack
  • PHPExcel_CalcEngine_Logger
  • PHPExcel_Calculation
  • PHPExcel_Calculation_Database
  • PHPExcel_Calculation_DateTime
  • PHPExcel_Calculation_Engineering
  • PHPExcel_Calculation_ExceptionHandler
  • PHPExcel_Calculation_Financial
  • PHPExcel_Calculation_FormulaParser
  • PHPExcel_Calculation_FormulaToken
  • PHPExcel_Calculation_Function
  • PHPExcel_Calculation_Functions
  • PHPExcel_Calculation_Logical
  • PHPExcel_Calculation_LookupRef
  • PHPExcel_Calculation_MathTrig
  • PHPExcel_Calculation_Statistical
  • PHPExcel_Calculation_TextData
  • PHPExcel_Calculation_Token_Stack
  • PHPExcel_Cell
  • PHPExcel_Cell_AdvancedValueBinder
  • PHPExcel_Cell_DataType
  • PHPExcel_Cell_DataValidation
  • PHPExcel_Cell_DefaultValueBinder
  • PHPExcel_Cell_Hyperlink
  • PHPExcel_Chart
  • PHPExcel_Chart_DataSeries
  • PHPExcel_Chart_DataSeriesValues
  • PHPExcel_Chart_Layout
  • PHPExcel_Chart_Legend
  • PHPExcel_Chart_PlotArea
  • PHPExcel_Chart_Renderer_jpgraph
  • PHPExcel_Chart_Title
  • PHPExcel_Comment
  • PHPExcel_DocumentProperties
  • PHPExcel_DocumentSecurity
  • PHPExcel_Exponential_Best_Fit
  • PHPExcel_HashTable
  • PHPExcel_IOFactory
  • PHPExcel_Linear_Best_Fit
  • PHPExcel_Logarithmic_Best_Fit
  • PHPExcel_NamedRange
  • PHPExcel_Polynomial_Best_Fit
  • PHPExcel_Power_Best_Fit
  • PHPExcel_Reader_Abstract
  • PHPExcel_Reader_CSV
  • PHPExcel_Reader_DefaultReadFilter
  • PHPExcel_Reader_Excel2003XML
  • PHPExcel_Reader_Excel2007
  • PHPExcel_Reader_Excel2007_Chart
  • PHPExcel_Reader_Excel2007_Theme
  • PHPExcel_Reader_Excel5
  • PHPExcel_Reader_Excel5_Escher
  • PHPExcel_Reader_Excel5_MD5
  • PHPExcel_Reader_Excel5_RC4
  • PHPExcel_Reader_Gnumeric
  • PHPExcel_Reader_HTML
  • PHPExcel_Reader_OOCalc
  • PHPExcel_Reader_SYLK
  • PHPExcel_ReferenceHelper
  • PHPExcel_RichText
  • PHPExcel_RichText_Run
  • PHPExcel_RichText_TextElement
  • PHPExcel_Settings
  • PHPExcel_Shared_CodePage
  • PHPExcel_Shared_Date
  • PHPExcel_Shared_Drawing
  • PHPExcel_Shared_Escher
  • PHPExcel_Shared_Escher_DgContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer
  • PHPExcel_Shared_Escher_DggContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
  • PHPExcel_Shared_Excel5
  • PHPExcel_Shared_File
  • PHPExcel_Shared_Font
  • PHPExcel_Shared_JAMA_LUDecomposition
  • PHPExcel_Shared_JAMA_Matrix
  • PHPExcel_Shared_JAMA_QRDecomposition
  • PHPExcel_Shared_OLE
  • PHPExcel_Shared_OLE_ChainedBlockStream
  • PHPExcel_Shared_OLE_PPS
  • PHPExcel_Shared_OLE_PPS_File
  • PHPExcel_Shared_OLE_PPS_Root
  • PHPExcel_Shared_OLERead
  • PHPExcel_Shared_PasswordHasher
  • PHPExcel_Shared_String
  • PHPExcel_Shared_TimeZone
  • PHPExcel_Shared_XMLWriter
  • PHPExcel_Shared_ZipArchive
  • PHPExcel_Shared_ZipStreamWrapper
  • PHPExcel_Style
  • PHPExcel_Style_Alignment
  • PHPExcel_Style_Border
  • PHPExcel_Style_Borders
  • PHPExcel_Style_Color
  • PHPExcel_Style_Conditional
  • PHPExcel_Style_Fill
  • PHPExcel_Style_Font
  • PHPExcel_Style_NumberFormat
  • PHPExcel_Style_Protection
  • PHPExcel_Style_Supervisor
  • PHPExcel_Worksheet
  • PHPExcel_Worksheet_AutoFilter
  • PHPExcel_Worksheet_AutoFilter_Column
  • PHPExcel_Worksheet_AutoFilter_Column_Rule
  • PHPExcel_Worksheet_BaseDrawing
  • PHPExcel_Worksheet_CellIterator
  • PHPExcel_Worksheet_ColumnDimension
  • PHPExcel_Worksheet_Drawing
  • PHPExcel_Worksheet_Drawing_Shadow
  • PHPExcel_Worksheet_HeaderFooter
  • PHPExcel_Worksheet_HeaderFooterDrawing
  • PHPExcel_Worksheet_MemoryDrawing
  • PHPExcel_Worksheet_PageMargins
  • PHPExcel_Worksheet_PageSetup
  • PHPExcel_Worksheet_Protection
  • PHPExcel_Worksheet_Row
  • PHPExcel_Worksheet_RowDimension
  • PHPExcel_Worksheet_RowIterator
  • PHPExcel_Worksheet_SheetView
  • PHPExcel_WorksheetIterator
  • PHPExcel_Writer_Abstract
  • PHPExcel_Writer_CSV
  • PHPExcel_Writer_Excel2007
  • PHPExcel_Writer_Excel2007_Chart
  • PHPExcel_Writer_Excel2007_Comments
  • PHPExcel_Writer_Excel2007_ContentTypes
  • PHPExcel_Writer_Excel2007_DocProps
  • PHPExcel_Writer_Excel2007_Drawing
  • PHPExcel_Writer_Excel2007_Rels
  • PHPExcel_Writer_Excel2007_RelsRibbon
  • PHPExcel_Writer_Excel2007_RelsVBA
  • PHPExcel_Writer_Excel2007_StringTable
  • PHPExcel_Writer_Excel2007_Style
  • PHPExcel_Writer_Excel2007_Theme
  • PHPExcel_Writer_Excel2007_Workbook
  • PHPExcel_Writer_Excel2007_Worksheet
  • PHPExcel_Writer_Excel2007_WriterPart
  • PHPExcel_Writer_Excel5
  • PHPExcel_Writer_Excel5_BIFFwriter
  • PHPExcel_Writer_Excel5_Escher
  • PHPExcel_Writer_Excel5_Font
  • PHPExcel_Writer_Excel5_Parser
  • PHPExcel_Writer_Excel5_Workbook
  • PHPExcel_Writer_Excel5_Worksheet
  • PHPExcel_Writer_Excel5_Xf
  • PHPExcel_Writer_HTML
  • PHPExcel_Writer_PDF
  • PHPExcel_Writer_PDF_Core
  • PHPExcel_Writer_PDF_DomPDF
  • PHPExcel_Writer_PDF_mPDF
  • PHPExcel_Writer_PDF_tcPDF
  • Provincia
  • Radiacion
  • SingularValueDecomposition
  • Sistema
  • trendClass
  • xajax
  • xajaxArgumentManager
  • xajaxCallableObject
  • xajaxCallableObjectPlugin
  • xajaxControl
  • xajaxControlContainer
  • xajaxCustomRequest
  • xajaxCustomResponse
  • xajaxEvent
  • xajaxEventPlugin
  • xajaxFunctionPlugin
  • xajaxIncludeClientScriptPlugin
  • xajaxLanguageManager
  • xajaxPlugin
  • xajaxPluginManager
  • xajaxRequest
  • xajaxRequestPlugin
  • xajaxResponse
  • xajaxResponseManager
  • xajaxResponsePlugin
  • xajaxScriptPlugin
  • xajaxUserFunction
  • XMLWriter

Interfaces

  • DateTimeInterface
  • Iterator
  • PHPExcel_CachedObjectStorage_ICache
  • PHPExcel_Cell_IValueBinder
  • PHPExcel_IComparable
  • PHPExcel_Reader_IReader
  • PHPExcel_Reader_IReadFilter
  • PHPExcel_RichText_ITextElement
  • PHPExcel_Writer_IWriter
  • Throwable
  • Traversable

Exceptions

  • Exception
  • PHPExcel_Calculation_Exception
  • PHPExcel_Chart_Exception
  • PHPExcel_Exception
  • PHPExcel_Reader_Exception
  • PHPExcel_Writer_Exception

Functions

  • acosh
  • agregar_elemento
  • asinh
  • atanh
  • borrar_elementos
  • borrar_gdm_ab
  • borrar_irradiacion
  • borrar_latitud
  • borrar_panel
  • borrar_periodo
  • borrar_pmp_min_pmp_max
  • borrar_radiacion
  • borrar_resumen
  • borrar_sistema
  • borrar_sombra
  • gdm_ab
  • grabar_resumen
  • historial
  • hypo
  • irradiacion
  • JAMAError
  • latitud
  • limpiar_historial
  • login
  • mb_str_replace
  • mostrar_energia_total_ch
  • mostrar_panel_md_th
  • mostrar_panel_th
  • mostrar_radiacion_md_th
  • mostrar_radiacion_th
  • mostrar_resumen_th
  • panel
  • PclZipUtilCopyBlock
  • PclZipUtilOptionText
  • PclZipUtilPathInclusion
  • PclZipUtilPathReduction
  • PclZipUtilRename
  • PclZipUtilTranslateWinPath
  • periodo
  • pmp_min_pmp_max
  • preparar_panel
  • preparar_radiacion
  • preparar_radiacion_media
  • radiacion
  • resumen
  • sistema
  • sombra
  • xajaxCompressFile
  • xajaxErrorHandler
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
  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_Calculation
 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 */
 30: if (!defined('PHPEXCEL_ROOT')) {
 31:     /**
 32:      * @ignore
 33:      */
 34:     define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
 35:     require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
 36: }
 37: 
 38: 
 39: /** MAX_VALUE */
 40: define('MAX_VALUE', 1.2e308);
 41: 
 42: /** 2 / PI */
 43: define('M_2DIVPI', 0.63661977236758134307553505349006);
 44: 
 45: /** MAX_ITERATIONS */
 46: define('MAX_ITERATIONS', 256);
 47: 
 48: /** PRECISION */
 49: define('PRECISION', 8.88E-016);
 50: 
 51: 
 52: /**
 53:  * PHPExcel_Calculation_Functions
 54:  *
 55:  * @category    PHPExcel
 56:  * @package     PHPExcel_Calculation
 57:  * @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 58:  */
 59: class PHPExcel_Calculation_Functions {
 60: 
 61:     /** constants */
 62:     const COMPATIBILITY_EXCEL       = 'Excel';
 63:     const COMPATIBILITY_GNUMERIC    = 'Gnumeric';
 64:     const COMPATIBILITY_OPENOFFICE  = 'OpenOfficeCalc';
 65: 
 66:     const RETURNDATE_PHP_NUMERIC    = 'P';
 67:     const RETURNDATE_PHP_OBJECT     = 'O';
 68:     const RETURNDATE_EXCEL          = 'E';
 69: 
 70: 
 71:     /**
 72:      * Compatibility mode to use for error checking and responses
 73:      *
 74:      * @access  private
 75:      * @var string
 76:      */
 77:     protected static $compatibilityMode = self::COMPATIBILITY_EXCEL;
 78: 
 79:     /**
 80:      * Data Type to use when returning date values
 81:      *
 82:      * @access  private
 83:      * @var string
 84:      */
 85:     protected static $ReturnDateType    = self::RETURNDATE_EXCEL;
 86: 
 87:     /**
 88:      * List of error codes
 89:      *
 90:      * @access  private
 91:      * @var array
 92:      */
 93:     protected static $_errorCodes   = array( 'null'             => '#NULL!',
 94:                                              'divisionbyzero'   => '#DIV/0!',
 95:                                              'value'            => '#VALUE!',
 96:                                              'reference'        => '#REF!',
 97:                                              'name'             => '#NAME?',
 98:                                              'num'              => '#NUM!',
 99:                                              'na'               => '#N/A',
100:                                              'gettingdata'      => '#GETTING_DATA'
101:                                            );
102: 
103: 
104:     /**
105:      * Set the Compatibility Mode
106:      *
107:      * @access  public
108:      * @category Function Configuration
109:      * @param    string     $compatibilityMode      Compatibility Mode
110:      *                                              Permitted values are:
111:      *                                                  PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL         'Excel'
112:      *                                                  PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC      'Gnumeric'
113:      *                                                  PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE    'OpenOfficeCalc'
114:      * @return   boolean    (Success or Failure)
115:      */
116:     public static function setCompatibilityMode($compatibilityMode) {
117:         if (($compatibilityMode == self::COMPATIBILITY_EXCEL) ||
118:             ($compatibilityMode == self::COMPATIBILITY_GNUMERIC) ||
119:             ($compatibilityMode == self::COMPATIBILITY_OPENOFFICE)) {
120:             self::$compatibilityMode = $compatibilityMode;
121:             return True;
122:         }
123:         return False;
124:     }   //  function setCompatibilityMode()
125: 
126: 
127:     /**
128:      * Return the current Compatibility Mode
129:      *
130:      * @access  public
131:      * @category Function Configuration
132:      * @return   string     Compatibility Mode
133:      *                          Possible Return values are:
134:      *                              PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL         'Excel'
135:      *                              PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC      'Gnumeric'
136:      *                              PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE    'OpenOfficeCalc'
137:      */
138:     public static function getCompatibilityMode() {
139:         return self::$compatibilityMode;
140:     }   //  function getCompatibilityMode()
141: 
142: 
143:     /**
144:      * Set the Return Date Format used by functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object)
145:      *
146:      * @access  public
147:      * @category Function Configuration
148:      * @param    string $returnDateType         Return Date Format
149:      *                                              Permitted values are:
150:      *                                                  PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC      'P'
151:      *                                                  PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT       'O'
152:      *                                                  PHPExcel_Calculation_Functions::RETURNDATE_EXCEL            'E'
153:      * @return   boolean                            Success or failure
154:      */
155:     public static function setReturnDateType($returnDateType) {
156:         if (($returnDateType == self::RETURNDATE_PHP_NUMERIC) ||
157:             ($returnDateType == self::RETURNDATE_PHP_OBJECT) ||
158:             ($returnDateType == self::RETURNDATE_EXCEL)) {
159:             self::$ReturnDateType = $returnDateType;
160:             return True;
161:         }
162:         return False;
163:     }   //  function setReturnDateType()
164: 
165: 
166:     /**
167:      * Return the current Return Date Format for functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object)
168:      *
169:      * @access  public
170:      * @category Function Configuration
171:      * @return   string     Return Date Format
172:      *                          Possible Return values are:
173:      *                              PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC      'P'
174:      *                              PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT       'O'
175:      *                              PHPExcel_Calculation_Functions::RETURNDATE_EXCEL            'E'
176:      */
177:     public static function getReturnDateType() {
178:         return self::$ReturnDateType;
179:     }   //  function getReturnDateType()
180: 
181: 
182:     /**
183:      * DUMMY
184:      *
185:      * @access  public
186:      * @category Error Returns
187:      * @return  string  #Not Yet Implemented
188:      */
189:     public static function DUMMY() {
190:         return '#Not Yet Implemented';
191:     }   //  function DUMMY()
192: 
193: 
194:     /**
195:      * DIV0
196:      *
197:      * @access  public
198:      * @category Error Returns
199:      * @return  string  #Not Yet Implemented
200:      */
201:     public static function DIV0() {
202:         return self::$_errorCodes['divisionbyzero'];
203:     }   //  function DIV0()
204: 
205: 
206:     /**
207:      * NA
208:      *
209:      * Excel Function:
210:      *      =NA()
211:      *
212:      * Returns the error value #N/A
213:      *      #N/A is the error value that means "no value is available."
214:      *
215:      * @access  public
216:      * @category Logical Functions
217:      * @return  string  #N/A!
218:      */
219:     public static function NA() {
220:         return self::$_errorCodes['na'];
221:     }   //  function NA()
222: 
223: 
224:     /**
225:      * NaN
226:      *
227:      * Returns the error value #NUM!
228:      *
229:      * @access  public
230:      * @category Error Returns
231:      * @return  string  #NUM!
232:      */
233:     public static function NaN() {
234:         return self::$_errorCodes['num'];
235:     }   //  function NaN()
236: 
237: 
238:     /**
239:      * NAME
240:      *
241:      * Returns the error value #NAME?
242:      *
243:      * @access  public
244:      * @category Error Returns
245:      * @return  string  #NAME?
246:      */
247:     public static function NAME() {
248:         return self::$_errorCodes['name'];
249:     }   //  function NAME()
250: 
251: 
252:     /**
253:      * REF
254:      *
255:      * Returns the error value #REF!
256:      *
257:      * @access  public
258:      * @category Error Returns
259:      * @return  string  #REF!
260:      */
261:     public static function REF() {
262:         return self::$_errorCodes['reference'];
263:     }   //  function REF()
264: 
265: 
266:     /**
267:      * NULL
268:      *
269:      * Returns the error value #NULL!
270:      *
271:      * @access  public
272:      * @category Error Returns
273:      * @return  string  #NULL!
274:      */
275:     public static function NULL() {
276:         return self::$_errorCodes['null'];
277:     }   //  function NULL()
278: 
279: 
280:     /**
281:      * VALUE
282:      *
283:      * Returns the error value #VALUE!
284:      *
285:      * @access  public
286:      * @category Error Returns
287:      * @return  string  #VALUE!
288:      */
289:     public static function VALUE() {
290:         return self::$_errorCodes['value'];
291:     }   //  function VALUE()
292: 
293: 
294:     public static function isMatrixValue($idx) {
295:         return ((substr_count($idx,'.') <= 1) || (preg_match('/\.[A-Z]/',$idx) > 0));
296:     }
297: 
298: 
299:     public static function isValue($idx) {
300:         return (substr_count($idx,'.') == 0);
301:     }
302: 
303: 
304:     public static function isCellValue($idx) {
305:         return (substr_count($idx,'.') > 1);
306:     }
307: 
308: 
309:     public static function _ifCondition($condition) {
310:         $condition  = PHPExcel_Calculation_Functions::flattenSingleValue($condition);
311:         if (!isset($condition{0}))
312:             $condition = '=""';
313:         if (!in_array($condition{0},array('>', '<', '='))) {
314:             if (!is_numeric($condition)) { $condition = PHPExcel_Calculation::_wrapResult(strtoupper($condition)); }
315:             return '='.$condition;
316:         } else {
317:             preg_match('/([<>=]+)(.*)/',$condition,$matches);
318:             list(,$operator,$operand) = $matches;
319: 
320:             if (!is_numeric($operand)) {
321:                 $operand = str_replace('"', '""', $operand);
322:                 $operand = PHPExcel_Calculation::_wrapResult(strtoupper($operand));
323:             }
324: 
325:             return $operator.$operand;
326:         }
327:     }   //  function _ifCondition()
328: 
329: 
330:     /**
331:      * ERROR_TYPE
332:      *
333:      * @param   mixed   $value  Value to check
334:      * @return  boolean
335:      */
336:     public static function ERROR_TYPE($value = '') {
337:         $value  = self::flattenSingleValue($value);
338: 
339:         $i = 1;
340:         foreach(self::$_errorCodes as $errorCode) {
341:             if ($value === $errorCode) {
342:                 return $i;
343:             }
344:             ++$i;
345:         }
346:         return self::NA();
347:     }   //  function ERROR_TYPE()
348: 
349: 
350:     /**
351:      * IS_BLANK
352:      *
353:      * @param   mixed   $value  Value to check
354:      * @return  boolean
355:      */
356:     public static function IS_BLANK($value = NULL) {
357:         if (!is_null($value)) {
358:             $value  = self::flattenSingleValue($value);
359:         }
360: 
361:         return is_null($value);
362:     }   //  function IS_BLANK()
363: 
364: 
365:     /**
366:      * IS_ERR
367:      *
368:      * @param   mixed   $value  Value to check
369:      * @return  boolean
370:      */
371:     public static function IS_ERR($value = '') {
372:         $value      = self::flattenSingleValue($value);
373: 
374:         return self::IS_ERROR($value) && (!self::IS_NA($value));
375:     }   //  function IS_ERR()
376: 
377: 
378:     /**
379:      * IS_ERROR
380:      *
381:      * @param   mixed   $value  Value to check
382:      * @return  boolean
383:      */
384:     public static function IS_ERROR($value = '') {
385:         $value      = self::flattenSingleValue($value);
386: 
387:         if (!is_string($value))
388:             return false;
389:         return in_array($value, array_values(self::$_errorCodes));
390:     }   //  function IS_ERROR()
391: 
392: 
393:     /**
394:      * IS_NA
395:      *
396:      * @param   mixed   $value  Value to check
397:      * @return  boolean
398:      */
399:     public static function IS_NA($value = '') {
400:         $value      = self::flattenSingleValue($value);
401: 
402:         return ($value === self::NA());
403:     }   //  function IS_NA()
404: 
405: 
406:     /**
407:      * IS_EVEN
408:      *
409:      * @param   mixed   $value  Value to check
410:      * @return  boolean
411:      */
412:     public static function IS_EVEN($value = NULL) {
413:         $value = self::flattenSingleValue($value);
414: 
415:         if ($value === NULL)
416:             return self::NAME();
417:         if ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value))))
418:             return self::VALUE();
419:         return ($value % 2 == 0);
420:     }   //  function IS_EVEN()
421: 
422: 
423:     /**
424:      * IS_ODD
425:      *
426:      * @param   mixed   $value  Value to check
427:      * @return  boolean
428:      */
429:     public static function IS_ODD($value = NULL) {
430:         $value = self::flattenSingleValue($value);
431: 
432:         if ($value === NULL)
433:             return self::NAME();
434:         if ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value))))
435:             return self::VALUE();
436:         return (abs($value) % 2 == 1);
437:     }   //  function IS_ODD()
438: 
439: 
440:     /**
441:      * IS_NUMBER
442:      *
443:      * @param   mixed   $value      Value to check
444:      * @return  boolean
445:      */
446:     public static function IS_NUMBER($value = NULL) {
447:         $value      = self::flattenSingleValue($value);
448: 
449:         if (is_string($value)) {
450:             return False;
451:         }
452:         return is_numeric($value);
453:     }   //  function IS_NUMBER()
454: 
455: 
456:     /**
457:      * IS_LOGICAL
458:      *
459:      * @param   mixed   $value      Value to check
460:      * @return  boolean
461:      */
462:     public static function IS_LOGICAL($value = NULL) {
463:         $value      = self::flattenSingleValue($value);
464: 
465:         return is_bool($value);
466:     }   //  function IS_LOGICAL()
467: 
468: 
469:     /**
470:      * IS_TEXT
471:      *
472:      * @param   mixed   $value      Value to check
473:      * @return  boolean
474:      */
475:     public static function IS_TEXT($value = NULL) {
476:         $value      = self::flattenSingleValue($value);
477: 
478:         return (is_string($value) && !self::IS_ERROR($value));
479:     }   //  function IS_TEXT()
480: 
481: 
482:     /**
483:      * IS_NONTEXT
484:      *
485:      * @param   mixed   $value      Value to check
486:      * @return  boolean
487:      */
488:     public static function IS_NONTEXT($value = NULL) {
489:         return !self::IS_TEXT($value);
490:     }   //  function IS_NONTEXT()
491: 
492: 
493:     /**
494:      * VERSION
495:      *
496:      * @return  string  Version information
497:      */
498:     public static function VERSION() {
499:         return 'PHPExcel 1.8.0, 2014-03-02';
500:     }   //  function VERSION()
501: 
502: 
503:     /**
504:      * N
505:      *
506:      * Returns a value converted to a number
507:      *
508:      * @param   value       The value you want converted
509:      * @return  number      N converts values listed in the following table
510:      *      If value is or refers to N returns
511:      *      A number            That number
512:      *      A date              The serial number of that date
513:      *      TRUE                1
514:      *      FALSE               0
515:      *      An error value      The error value
516:      *      Anything else       0
517:      */
518:     public static function N($value = NULL) {
519:         while (is_array($value)) {
520:             $value = array_shift($value);
521:         }
522: 
523:         switch (gettype($value)) {
524:             case 'double'   :
525:             case 'float'    :
526:             case 'integer'  :
527:                 return $value;
528:                 break;
529:             case 'boolean'  :
530:                 return (integer) $value;
531:                 break;
532:             case 'string'   :
533:                 //  Errors
534:                 if ((strlen($value) > 0) && ($value{0} == '#')) {
535:                     return $value;
536:                 }
537:                 break;
538:         }
539:         return 0;
540:     }   //  function N()
541: 
542: 
543:     /**
544:      * TYPE
545:      *
546:      * Returns a number that identifies the type of a value
547:      *
548:      * @param   value       The value you want tested
549:      * @return  number      N converts values listed in the following table
550:      *      If value is or refers to N returns
551:      *      A number            1
552:      *      Text                2
553:      *      Logical Value       4
554:      *      An error value      16
555:      *      Array or Matrix     64
556:      */
557:     public static function TYPE($value = NULL) {
558:         $value  = self::flattenArrayIndexed($value);
559:         if (is_array($value) && (count($value) > 1)) {
560:             $a = array_keys($value);
561:             $a = array_pop($a);
562:             //  Range of cells is an error
563:             if (self::isCellValue($a)) {
564:                 return 16;
565:             //  Test for Matrix
566:             } elseif (self::isMatrixValue($a)) {
567:                 return 64;
568:             }
569:         } elseif(empty($value)) {
570:             //  Empty Cell
571:             return 1;
572:         }
573:         $value  = self::flattenSingleValue($value);
574: 
575:         if (($value === NULL) || (is_float($value)) || (is_int($value))) {
576:                 return 1;
577:         } elseif(is_bool($value)) {
578:                 return 4;
579:         } elseif(is_array($value)) {
580:                 return 64;
581:                 break;
582:         } elseif(is_string($value)) {
583:             //  Errors
584:             if ((strlen($value) > 0) && ($value{0} == '#')) {
585:                 return 16;
586:             }
587:             return 2;
588:         }
589:         return 0;
590:     }   //  function TYPE()
591: 
592: 
593:     /**
594:      * Convert a multi-dimensional array to a simple 1-dimensional array
595:      *
596:      * @param   array   $array  Array to be flattened
597:      * @return  array   Flattened array
598:      */
599:     public static function flattenArray($array) {
600:         if (!is_array($array)) {
601:             return (array) $array;
602:         }
603: 
604:         $arrayValues = array();
605:         foreach ($array as $value) {
606:             if (is_array($value)) {
607:                 foreach ($value as $val) {
608:                     if (is_array($val)) {
609:                         foreach ($val as $v) {
610:                             $arrayValues[] = $v;
611:                         }
612:                     } else {
613:                         $arrayValues[] = $val;
614:                     }
615:                 }
616:             } else {
617:                 $arrayValues[] = $value;
618:             }
619:         }
620: 
621:         return $arrayValues;
622:     }   //  function flattenArray()
623: 
624: 
625:     /**
626:      * Convert a multi-dimensional array to a simple 1-dimensional array, but retain an element of indexing
627:      *
628:      * @param   array   $array  Array to be flattened
629:      * @return  array   Flattened array
630:      */
631:     public static function flattenArrayIndexed($array) {
632:         if (!is_array($array)) {
633:             return (array) $array;
634:         }
635: 
636:         $arrayValues = array();
637:         foreach ($array as $k1 => $value) {
638:             if (is_array($value)) {
639:                 foreach ($value as $k2 => $val) {
640:                     if (is_array($val)) {
641:                         foreach ($val as $k3 => $v) {
642:                             $arrayValues[$k1.'.'.$k2.'.'.$k3] = $v;
643:                         }
644:                     } else {
645:                         $arrayValues[$k1.'.'.$k2] = $val;
646:                     }
647:                 }
648:             } else {
649:                 $arrayValues[$k1] = $value;
650:             }
651:         }
652: 
653:         return $arrayValues;
654:     }   //  function flattenArrayIndexed()
655: 
656: 
657:     /**
658:      * Convert an array to a single scalar value by extracting the first element
659:      *
660:      * @param   mixed       $value      Array or scalar value
661:      * @return  mixed
662:      */
663:     public static function flattenSingleValue($value = '') {
664:         while (is_array($value)) {
665:             $value = array_pop($value);
666:         }
667: 
668:         return $value;
669:     }   //  function flattenSingleValue()
670: 
671: }   //  class PHPExcel_Calculation_Functions
672: 
673: 
674: //
675: //  There are a few mathematical functions that aren't available on all versions of PHP for all platforms
676: //  These functions aren't available in Windows implementations of PHP prior to version 5.3.0
677: //  So we test if they do exist for this version of PHP/operating platform; and if not we create them
678: //
679: if (!function_exists('acosh')) {
680:     function acosh($x) {
681:         return 2 * log(sqrt(($x + 1) / 2) + sqrt(($x - 1) / 2));
682:     }   //  function acosh()
683: }
684: 
685: if (!function_exists('asinh')) {
686:     function asinh($x) {
687:         return log($x + sqrt(1 + $x * $x));
688:     }   //  function asinh()
689: }
690: 
691: if (!function_exists('atanh')) {
692:     function atanh($x) {
693:         return (log(1 + $x) - log(1 - $x)) / 2;
694:     }   //  function atanh()
695: }
696: 
697: 
698: //
699: //  Strangely, PHP doesn't have a mb_str_replace multibyte function
700: //  As we'll only ever use this function with UTF-8 characters, we can simply "hard-code" the character set
701: //
702: if ((!function_exists('mb_str_replace')) &&
703:     (function_exists('mb_substr')) && (function_exists('mb_strlen')) && (function_exists('mb_strpos'))) {
704:     function mb_str_replace($search, $replace, $subject) {
705:         if(is_array($subject)) {
706:             $ret = array();
707:             foreach($subject as $key => $val) {
708:                 $ret[$key] = mb_str_replace($search, $replace, $val);
709:             }
710:             return $ret;
711:         }
712: 
713:         foreach((array) $search as $key => $s) {
714:             if($s == '') {
715:                 continue;
716:             }
717:             $r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : '');
718:             $pos = mb_strpos($subject, $s, 0, 'UTF-8');
719:             while($pos !== false) {
720:                 $subject = mb_substr($subject, 0, $pos, 'UTF-8') . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'), 65535, 'UTF-8');
721:                 $pos = mb_strpos($subject, $s, $pos + mb_strlen($r, 'UTF-8'), 'UTF-8');
722:             }
723:         }
724:         return $subject;
725:     }
726: }
727: 
Autene API documentation generated by ApiGen