Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
<?php
2
 
3
namespace PhpOffice\PhpSpreadsheet\Calculation\Information;
4
 
5
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
6
 
7
class ExcelError
8
{
9
    use ArrayEnabled;
10
 
11
    /**
12
     * List of error codes.
13
     *
14
     * @var array<string, string>
15
     */
16
    public const ERROR_CODES = [
17
        'null' => '#NULL!', // 1
18
        'divisionbyzero' => '#DIV/0!', // 2
19
        'value' => '#VALUE!', // 3
20
        'reference' => '#REF!', // 4
21
        'name' => '#NAME?', // 5
22
        'num' => '#NUM!', // 6
23
        'na' => '#N/A', // 7
24
        'gettingdata' => '#GETTING_DATA', // 8
25
        'spill' => '#SPILL!', // 9
26
        'connect' => '#CONNECT!', //10
27
        'blocked' => '#BLOCKED!', //11
28
        'unknown' => '#UNKNOWN!', //12
29
        'field' => '#FIELD!', //13
30
        'calculation' => '#CALC!', //14
31
    ];
32
 
33
    public static function throwError(mixed $value): string
34
    {
35
        return in_array($value, self::ERROR_CODES, true) ? $value : self::ERROR_CODES['value'];
36
    }
37
 
38
    /**
39
     * ERROR_TYPE.
40
     *
41
     * @param mixed $value Value to check
42
     */
43
    public static function type(mixed $value = ''): array|int|string
44
    {
45
        if (is_array($value)) {
46
            return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value);
47
        }
48
 
49
        $i = 1;
50
        foreach (self::ERROR_CODES as $errorCode) {
51
            if ($value === $errorCode) {
52
                return $i;
53
            }
54
            ++$i;
55
        }
56
 
57
        return self::NA();
58
    }
59
 
60
    /**
61
     * NULL.
62
     *
63
     * Returns the error value #NULL!
64
     *
65
     * @return string #NULL!
66
     */
67
    public static function null(): string
68
    {
69
        return self::ERROR_CODES['null'];
70
    }
71
 
72
    /**
73
     * NaN.
74
     *
75
     * Returns the error value #NUM!
76
     *
77
     * @return string #NUM!
78
     */
79
    public static function NAN(): string
80
    {
81
        return self::ERROR_CODES['num'];
82
    }
83
 
84
    /**
85
     * REF.
86
     *
87
     * Returns the error value #REF!
88
     *
89
     * @return string #REF!
90
     */
91
    public static function REF(): string
92
    {
93
        return self::ERROR_CODES['reference'];
94
    }
95
 
96
    /**
97
     * NA.
98
     *
99
     * Excel Function:
100
     *        =NA()
101
     *
102
     * Returns the error value #N/A
103
     *        #N/A is the error value that means "no value is available."
104
     *
105
     * @return string #N/A!
106
     */
107
    public static function NA(): string
108
    {
109
        return self::ERROR_CODES['na'];
110
    }
111
 
112
    /**
113
     * VALUE.
114
     *
115
     * Returns the error value #VALUE!
116
     *
117
     * @return string #VALUE!
118
     */
119
    public static function VALUE(): string
120
    {
121
        return self::ERROR_CODES['value'];
122
    }
123
 
124
    /**
125
     * NAME.
126
     *
127
     * Returns the error value #NAME?
128
     *
129
     * @return string #NAME?
130
     */
131
    public static function NAME(): string
132
    {
133
        return self::ERROR_CODES['name'];
134
    }
135
 
136
    /**
137
     * DIV0.
138
     *
139
     * @return string #DIV/0!
140
     */
141
    public static function DIV0(): string
142
    {
143
        return self::ERROR_CODES['divisionbyzero'];
144
    }
145
 
146
    /**
147
     * CALC.
148
     *
149
     * @return string #CALC!
150
     */
151
    public static function CALC(): string
152
    {
153
        return self::ERROR_CODES['calculation'];
154
    }
155
 
156
    /**
157
     * SPILL.
158
     *
159
     * @return string #SPILL!
160
     */
161
    public static function SPILL(): string
162
    {
163
        return self::ERROR_CODES['spill'];
164
    }
165
}