Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
gnumeric
Commits
9a69edb4
Commit
9a69edb4
authored
Mar 10, 1999
by
Michael Meeks
Browse files
Large update
parent
c0fa571d
Changes
6
Hide whitespace changes
Inline
Side-by-side
TODO
View file @
9a69edb4
...
...
@@ -92,10 +92,6 @@ GNOME Spread Sheet task list
* Excel importing
Hash cache functions,
Sort out setting colours on cells,
Sort out mul-blank records.
Sensible Unicode support.
...
...
@@ -103,11 +99,9 @@ GNOME Spread Sheet task list
Add collation of BIFF continuation records to the
previous record, to save many checks in the code.
Sort out formula conversion to use gnumerics representation
instead of strings.
* OLE
Serious testing required.
Integrate 'advance' into read_copy, and write, and rename to lseek
Snarf wine OLE API.
plugins/excel/ChangeLog
View file @
9a69edb4
1999-03-10 Michael Meeks <michael@imaginator.com>
* ms-formula.c: Inserted all the statistics formulae from
5.0a into the translation table.
1999-03-09 Michael Meeks <michael@imaginator.com>
* ms-formula.c (ms_excel_parse_formula): Hacked out the
...
...
plugins/excel/ms-excel-read.c
View file @
9a69edb4
...
...
@@ -1251,22 +1251,10 @@ ms_excel_read_cell (BIFF_QUERY * q, MS_EXCEL_SHEET * sheet)
row
=
EX_GETROW
(
q
);
col
=
EX_GETCOL
(
q
);
ptr
=
(
q
->
data
+
4
);
lastcol
=
BIFF_GETWORD
(
q
->
data
+
q
->
length
-
2
);
/*
* guess
*/
lastcol
=
BIFF_GETWORD
(
q
->
data
+
q
->
length
-
2
);
/* printf ("Cells in row %d are blank starting at col %d until col %d (0x%x)\n",
row, col, lastcol, lastcol); */
/*
* if (lastcol<col) What to do in this case ?
* {
* printf ("Serious implentation documentation error\n");
* break;
* }
*/
incr
=
(
lastcol
>
col
)
?
1
:
-
1
;
/*
* g_assert (((lastcol-col)*incr+1)*2+6<=q->length);
*/
while
(
col
!=
lastcol
){
ms_excel_sheet_insert
(
sheet
,
BIFF_GETWORD
(
ptr
),
EX_GETCOL
(
q
),
EX_GETROW
(
q
),
0
);
col
+=
incr
;
...
...
@@ -1493,8 +1481,11 @@ ms_excel_read_cell (BIFF_QUERY * q, MS_EXCEL_SHEET * sheet)
case
BIFF_STRING
:
/* FIXME: S59DE9.HTM */
{
char
*
txt
;
printf
(
"This cell evaluated to '%s': so what ? data:
\n
"
,
(
txt
=
biff_get_text
(
q
->
data
+
2
,
BIFF_GETWORD
(
q
->
data
))))
;
if
(
txt
)
g_free
(
txt
)
;
if
(
EXCEL_DEBUG
>
0
)
{
printf
(
"This cell evaluated to '%s': so what ? data:
\n
"
,
(
txt
=
biff_get_text
(
q
->
data
+
2
,
BIFF_GETWORD
(
q
->
data
))))
;
if
(
txt
)
g_free
(
txt
)
;
}
break
;
}
case
BIFF_BOOLERR
:
/* S59D5F.HTM */
...
...
plugins/excel/ms-excel.c
View file @
9a69edb4
...
...
@@ -1251,22 +1251,10 @@ ms_excel_read_cell (BIFF_QUERY * q, MS_EXCEL_SHEET * sheet)
row
=
EX_GETROW
(
q
);
col
=
EX_GETCOL
(
q
);
ptr
=
(
q
->
data
+
4
);
lastcol
=
BIFF_GETWORD
(
q
->
data
+
q
->
length
-
2
);
/*
* guess
*/
lastcol
=
BIFF_GETWORD
(
q
->
data
+
q
->
length
-
2
);
/* printf ("Cells in row %d are blank starting at col %d until col %d (0x%x)\n",
row, col, lastcol, lastcol); */
/*
* if (lastcol<col) What to do in this case ?
* {
* printf ("Serious implentation documentation error\n");
* break;
* }
*/
incr
=
(
lastcol
>
col
)
?
1
:
-
1
;
/*
* g_assert (((lastcol-col)*incr+1)*2+6<=q->length);
*/
while
(
col
!=
lastcol
){
ms_excel_sheet_insert
(
sheet
,
BIFF_GETWORD
(
ptr
),
EX_GETCOL
(
q
),
EX_GETROW
(
q
),
0
);
col
+=
incr
;
...
...
@@ -1493,8 +1481,11 @@ ms_excel_read_cell (BIFF_QUERY * q, MS_EXCEL_SHEET * sheet)
case
BIFF_STRING
:
/* FIXME: S59DE9.HTM */
{
char
*
txt
;
printf
(
"This cell evaluated to '%s': so what ? data:
\n
"
,
(
txt
=
biff_get_text
(
q
->
data
+
2
,
BIFF_GETWORD
(
q
->
data
))))
;
if
(
txt
)
g_free
(
txt
)
;
if
(
EXCEL_DEBUG
>
0
)
{
printf
(
"This cell evaluated to '%s': so what ? data:
\n
"
,
(
txt
=
biff_get_text
(
q
->
data
+
2
,
BIFF_GETWORD
(
q
->
data
))))
;
if
(
txt
)
g_free
(
txt
)
;
}
break
;
}
case
BIFF_BOOLERR
:
/* S59D5F.HTM */
...
...
plugins/excel/ms-formula-read.c
View file @
9a69edb4
...
...
@@ -56,15 +56,22 @@ FORMULA_OP_DATA formula_op_data[] = {
**/
FORMULA_FUNC_DATA
formula_func_data
[]
=
{
{
0x00
,
"COUNT ("
,
0
,
")"
,
2
,
0
},
{
0x01
,
"0x1 ("
,
0
,
")"
,
8
,
0
},
{
0x02
,
"ISNA ("
,
0
,
")"
,
1
,
0
},
{
0x03
,
"ISERROR ("
,
0
,
")"
,
1
,
0
},
{
0x04
,
"SUM ("
,
0
,
")"
,
-
1
,
0
},
{
0x05
,
"AVERAGE ("
,
0
,
")"
,
-
1
,
0
},
{
0x06
,
"MIN ("
,
0
,
")"
,
-
1
,
0
},
{
0x07
,
"MAX ("
,
0
,
")"
,
-
1
,
0
},
{
0x0f
,
"SIN ("
,
0
,
")"
,
1
,
0
},
{
0x08
,
"0x8 ("
,
0
,
")"
,
8
,
0
},
{
0x09
,
"0x9 ("
,
0
,
")"
,
8
,
0
},
{
0x0a
,
"0xa ("
,
0
,
")"
,
8
,
0
},
{
0x0b
,
"0xb ("
,
0
,
")"
,
8
,
0
},
{
0x0c
,
"STDEV ("
,
0
,
")"
,
-
1
,
0
},
{
0x0d
,
"DOLLAR ("
,
0
,
")"
,
1
,
0
},
{
0x0e
,
"FIXED ("
,
0
,
")"
,
1
,
0
},
{
0x0f
,
"SIN ("
,
0
,
")"
,
1
,
0
},
{
0x10
,
"COS ("
,
0
,
")"
,
1
,
0
},
{
0x11
,
"TAN ("
,
0
,
")"
,
1
,
0
},
{
0x12
,
"ATAN ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -73,16 +80,43 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x16
,
"LN ("
,
0
,
")"
,
1
,
0
},
{
0x17
,
"LOG10 ("
,
0
,
")"
,
1
,
0
},
{
0x1a
,
"SIGN ("
,
0
,
")"
,
1
,
0
},
{
0x1b
,
"0x1b ("
,
0
,
")"
,
8
,
0
},
{
0x1c
,
"0x1c ("
,
0
,
")"
,
8
,
0
},
{
0x1d
,
"0x1d ("
,
0
,
")"
,
8
,
0
},
{
0x1e
,
"REPT ("
,
0
,
")"
,
2
,
0
},
{
0x1f
,
"MID ("
,
0
,
")"
,
3
,
0
},
{
0x20
,
"LEN ("
,
0
,
")"
,
1
,
0
},
{
0x21
,
"VALUE ("
,
0
,
")"
,
1
,
0
},
{
0x22
,
"0x22 ("
,
0
,
")"
,
8
,
0
},
{
0x23
,
"0x23 ("
,
0
,
")"
,
8
,
0
},
{
0x24
,
"AND ("
,
0
,
")"
,
-
1
,
0
},
{
0x25
,
"OR ("
,
0
,
")"
,
-
1
,
0
},
{
0x26
,
"NOT ("
,
0
,
")"
,
1
,
0
},
{
0x27
,
"MOD ("
,
0
,
")"
,
2
,
0
},
{
0x28
,
"0x28 ("
,
0
,
")"
,
8
,
0
},
{
0x29
,
"0x29 ("
,
0
,
")"
,
8
,
0
},
{
0x2a
,
"0x2a ("
,
0
,
")"
,
8
,
0
},
{
0x2b
,
"0x2b ("
,
0
,
")"
,
8
,
0
},
{
0x2c
,
"0x2c ("
,
0
,
")"
,
8
,
0
},
{
0x2d
,
"0x2d ("
,
0
,
")"
,
8
,
0
},
{
0x2e
,
"VAR ("
,
0
,
")"
,
-
1
,
0
},
{
0x30
,
"REPLACE ("
,
0
,
")"
,
2
,
0
},
{
0x31
,
"LINEST ("
,
0
,
")"
,
2
,
0
},
{
0x32
,
"TREND ("
,
0
,
")"
,
4
,
0
},
{
0x33
,
"LOGEST ("
,
0
,
")"
,
1
,
0
},
{
0x34
,
"GROWTH ("
,
0
,
")"
,
-
1
,
0
},
{
0x35
,
"0x35 ("
,
0
,
")"
,
8
,
0
},
{
0x36
,
"0x36 ("
,
0
,
")"
,
8
,
0
},
{
0x37
,
"0x37 ("
,
0
,
")"
,
8
,
0
},
{
0x38
,
"0x38 ("
,
0
,
")"
,
8
,
0
},
{
0x39
,
"0x39 ("
,
0
,
")"
,
8
,
0
},
{
0x3a
,
"0x3a ("
,
0
,
")"
,
8
,
0
},
{
0x3b
,
"0x3b ("
,
0
,
")"
,
8
,
0
},
{
0x3c
,
"0x3c ("
,
0
,
")"
,
8
,
0
},
{
0x3d
,
"0x3d ("
,
0
,
")"
,
8
,
0
},
{
0x3e
,
"0x3e ("
,
0
,
")"
,
8
,
0
},
{
0x3f
,
"RAND ("
,
0
,
")"
,
0
,
0
},
{
0x40
,
"0x40 ("
,
0
,
")"
,
8
,
0
},
{
0x41
,
"DATE ("
,
0
,
")"
,
3
,
0
},
{
0x42
,
"TIME ("
,
0
,
")"
,
3
,
0
},
{
0x43
,
"DAY ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -93,15 +127,43 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x48
,
"MINUTE ("
,
0
,
")"
,
1
,
0
},
{
0x49
,
"SECOND ("
,
0
,
")"
,
1
,
0
},
{
0x4a
,
"NOW ("
,
0
,
")"
,
0
,
0
},
{
0x4b
,
"0x4b ("
,
0
,
")"
,
8
,
0
},
{
0x4c
,
"0x4c ("
,
0
,
")"
,
8
,
0
},
{
0x4d
,
"0x4d ("
,
0
,
")"
,
8
,
0
},
{
0x4e
,
"0x4e ("
,
0
,
")"
,
8
,
0
},
{
0x4f
,
"0x4f ("
,
0
,
")"
,
8
,
0
},
{
0x50
,
"0x50 ("
,
0
,
")"
,
8
,
0
},
{
0x51
,
"0x51 ("
,
0
,
")"
,
8
,
0
},
{
0x52
,
"SEARCH ("
,
0
,
")"
,
3
,
0
},
{
0x53
,
"0x53 ("
,
0
,
")"
,
8
,
0
},
{
0x54
,
"0x54 ("
,
0
,
")"
,
8
,
0
},
{
0x55
,
"0x55 ("
,
0
,
")"
,
8
,
0
},
{
0x56
,
"TYPE ("
,
0
,
")"
,
1
,
0
},
{
0x57
,
"0x57 ("
,
0
,
")"
,
8
,
0
},
{
0x58
,
"0x58 ("
,
0
,
")"
,
8
,
0
},
{
0x59
,
"0x59 ("
,
0
,
")"
,
8
,
0
},
{
0x5a
,
"0x5a ("
,
0
,
")"
,
8
,
0
},
{
0x5b
,
"0x5b ("
,
0
,
")"
,
8
,
0
},
{
0x5c
,
"0x5c ("
,
0
,
")"
,
8
,
0
},
{
0x5d
,
"0x5d ("
,
0
,
")"
,
8
,
0
},
{
0x5e
,
"0x5e ("
,
0
,
")"
,
8
,
0
},
{
0x5f
,
"0x5f ("
,
0
,
")"
,
8
,
0
},
{
0x60
,
"0x60 ("
,
0
,
")"
,
8
,
0
},
{
0x61
,
"ATAN2 ("
,
0
,
")"
,
2
,
0
},
{
0x62
,
"ASIN ("
,
0
,
")"
,
1
,
0
},
{
0x63
,
"ACOS ("
,
0
,
")"
,
1
,
0
},
{
0x64
,
"0x64 ("
,
0
,
")"
,
8
,
0
},
{
0x65
,
"0x65 ("
,
0
,
")"
,
8
,
0
},
{
0x65
,
"HLOOKUP ("
,
0
,
")"
,
-
1
,
0
},
{
0x66
,
"VLOOKUP ("
,
0
,
")"
,
-
1
,
0
},
{
0x67
,
"0x67 ("
,
0
,
")"
,
8
,
0
},
{
0x68
,
"0x68 ("
,
0
,
")"
,
8
,
0
},
{
0x69
,
"ISREF ("
,
0
,
")"
,
1
,
0
},
{
0x6a
,
"0x6a ("
,
0
,
")"
,
8
,
0
},
{
0x6b
,
"0x6b ("
,
0
,
")"
,
8
,
0
},
{
0x6c
,
"0x6c ("
,
0
,
")"
,
8
,
0
},
{
0x6d
,
"LOG ("
,
0
,
")"
,
1
,
0
},
{
0x6e
,
"0x6e ("
,
0
,
")"
,
8
,
0
},
{
0x6f
,
"CHAR ("
,
0
,
")"
,
1
,
0
},
{
0x70
,
"LOWER ("
,
0
,
")"
,
1
,
0
},
{
0x71
,
"UPPER ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -113,6 +175,8 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x77
,
"0x77 ("
,
0
,
")"
,
2
,
0
},
{
0x78
,
"SUBSTITUTE ("
,
0
,
")"
,
-
1
,
0
},
{
0x79
,
"CODE ("
,
0
,
")"
,
1
,
0
},
{
0x7a
,
"0x7a ("
,
0
,
")"
,
8
,
0
},
{
0x7b
,
"0x7b ("
,
0
,
")"
,
8
,
0
},
{
0x7c
,
"FIND ("
,
0
,
")"
,
-
1
,
0
},
{
0x7d
,
"CELL ("
,
0
,
")"
,
2
,
0
},
{
0x7e
,
"ISERR ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -121,13 +185,28 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x81
,
"ISBLANK ("
,
0
,
")"
,
1
,
0
},
{
0x82
,
"T ("
,
0
,
")"
,
1
,
0
},
{
0x83
,
"N ("
,
0
,
")"
,
1
,
0
},
{
0x84
,
"0x84 ("
,
0
,
")"
,
8
,
0
},
{
0x85
,
"0x85 ("
,
0
,
")"
,
8
,
0
},
{
0x86
,
"0x86 ("
,
0
,
")"
,
8
,
0
},
{
0x87
,
"0x87 ("
,
0
,
")"
,
8
,
0
},
{
0x88
,
"0x88 ("
,
0
,
")"
,
8
,
0
},
{
0x89
,
"0x89 ("
,
0
,
")"
,
8
,
0
},
{
0x8a
,
"0x8a ("
,
0
,
")"
,
8
,
0
},
{
0x8b
,
"0x8b ("
,
0
,
")"
,
8
,
0
},
{
0x8c
,
"DATEVALUE ("
,
0
,
")"
,
1
,
0
},
/* { 0xa2, "CLEAN (", 0, ")", 1, 0 }, */
{
0x8d
,
"0x8d ("
,
0
,
")"
,
8
,
0
},
{
0x8e
,
"0x8e ("
,
0
,
")"
,
8
,
0
},
{
0x8f
,
"0x8f ("
,
0
,
")"
,
8
,
0
},
{
0xa2
,
"CLEAN ("
,
0
,
")"
,
1
,
0
},
{
0xa9
,
"COUNTA ("
,
0
,
")"
,
-
1
,
0
},
{
0xbe
,
"ISNONTEXT ("
,
0
,
")"
,
1
,
0
},
{
0xc1
,
"STDEVP ("
,
0
,
")"
,
-
1
,
0
},
{
0xc2
,
"VARP ("
,
0
,
")"
,
-
1
,
0
},
{
0xc5
,
"TRUNC ("
,
0
,
")"
,
1
,
0
},
{
0xc6
,
"ISLOGICAL ("
,
0
,
")"
,
1
,
0
},
{
0xbe
,
"ISNONTEXT ("
,
0
,
")"
,
1
,
0
},
{
0xdc
,
"DAYS360 ("
,
0
,
")"
,
2
,
0
},
{
0xdd
,
"TODAY ("
,
0
,
")"
,
0
,
0
},
{
0xe3
,
"MEDIAN ("
,
0
,
")"
,
-
1
,
0
},
{
0xe5
,
"SINH ("
,
0
,
")"
,
1
,
0
},
{
0xe6
,
"COSH ("
,
0
,
")"
,
1
,
0
},
{
0xe7
,
"TANH ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -135,8 +214,68 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0xe9
,
"ACOSH ("
,
0
,
")"
,
1
,
0
},
{
0xea
,
"ATANH ("
,
0
,
")"
,
1
,
0
},
{
0xf4
,
"INFO ("
,
0
,
")"
,
1
,
0
},
{
0xfc
,
"FREQUENCY ("
,
0
,
")"
,
2
,
0
},
{
0x105
,
"ERROR.TYPE ("
,
0
,
")"
,
1
,
0
},
{
0x10d
,
"AVEDEV ("
,
0
,
")"
,
-
1
,
0
},
{
0x10e
,
"BETADIST ("
,
0
,
")"
,
3
,
0
},
{
0x10f
,
"GAMMALN ("
,
0
,
")"
,
1
,
0
},
{
0x110
,
"BETAINV ("
,
0
,
")"
,
3
,
0
},
{
0x111
,
"BINOMDIST ("
,
0
,
")"
,
4
,
0
},
{
0x112
,
"CHIDIST ("
,
0
,
")"
,
2
,
0
},
{
0x113
,
"CHIINV ("
,
0
,
")"
,
2
,
0
},
{
0x114
,
"0x114 ("
,
0
,
")"
,
3
,
0
},
{
0x115
,
"CONFIDENCE ("
,
0
,
")"
,
3
,
0
},
{
0x116
,
"CRITBINOM ("
,
0
,
")"
,
3
,
0
},
{
0x117
,
"0x117 ("
,
0
,
")"
,
8
,
0
},
{
0x118
,
"EXPONDIST ("
,
0
,
")"
,
3
,
0
},
{
0x119
,
"FDIST ("
,
0
,
")"
,
3
,
0
},
{
0x11a
,
"FINV ("
,
0
,
")"
,
3
,
0
},
{
0x11b
,
"FISHER ("
,
0
,
")"
,
1
,
0
},
{
0x11c
,
"FISHERINV ("
,
0
,
")"
,
1
,
0
},
{
0x11e
,
"GAMMADIST ("
,
0
,
")"
,
4
,
0
},
{
0x11f
,
"GAMMAINV ("
,
0
,
")"
,
3
,
0
},
{
0x120
,
"CEILING ("
,
0
,
")"
,
2
,
0
},
{
0x121
,
"HYPGEOMDIST ("
,
0
,
")"
,
4
,
0
},
{
0x122
,
"LOGNOMRDIST ("
,
0
,
")"
,
3
,
0
},
{
0x123
,
"LOGINV ("
,
0
,
")"
,
3
,
0
},
{
0x124
,
"NEGBINOMDIST ("
,
0
,
")"
,
3
,
0
},
{
0x125
,
"NORMDIST ("
,
0
,
")"
,
4
,
0
},
{
0x126
,
"NOMRSDIST ("
,
0
,
")"
,
1
,
0
},
{
0x127
,
"NORMINV ("
,
0
,
")"
,
3
,
0
},
{
0x128
,
"NORMSINV ("
,
0
,
")"
,
1
,
0
},
{
0x129
,
"STANDARDIZE ("
,
0
,
")"
,
3
,
0
},
{
0x12a
,
"0x12a ("
,
0
,
")"
,
8
,
0
},
{
0x12b
,
"PERMUT ("
,
0
,
")"
,
2
,
0
},
{
0x12c
,
"POISSON ("
,
0
,
")"
,
3
,
0
},
{
0x12d
,
"TDIST ("
,
0
,
")"
,
3
,
0
},
{
0x12e
,
"WEIBULL ("
,
0
,
")"
,
4
,
0
},
{
0x12f
,
"ZTEST ("
,
0
,
")"
,
3
,
0
},
{
0x132
,
"CHITEST ("
,
0
,
")"
,
2
,
0
},
{
0x133
,
"CORREL ("
,
0
,
")"
,
2
,
0
},
{
0x134
,
"COVAR ("
,
0
,
")"
,
2
,
0
},
{
0x135
,
"FORECAST ("
,
0
,
")"
,
3
,
0
},
{
0x136
,
"FTEST ("
,
0
,
")"
,
2
,
0
},
{
0x137
,
"INTERCEPT ("
,
0
,
")"
,
2
,
0
},
{
0x138
,
"PEARSON ("
,
0
,
")"
,
2
,
0
},
{
0x139
,
"RSQ ("
,
0
,
")"
,
2
,
0
},
{
0x13a
,
"STEYX ("
,
0
,
")"
,
2
,
0
},
{
0x13b
,
"SLOPE ("
,
0
,
")"
,
2
,
0
},
{
0x13c
,
"TTEST ("
,
0
,
")"
,
4
,
0
},
{
0x13d
,
"PROB ("
,
0
,
")"
,
3
,
0
},
{
0x13e
,
"DEVSQ ("
,
0
,
")"
,
-
1
,
0
},
{
0x13f
,
"GEOMEAN ("
,
0
,
")"
,
-
1
,
0
},
{
0x140
,
"HARMEAN ("
,
0
,
")"
,
-
1
,
0
},
{
0x142
,
"KURT ("
,
0
,
")"
,
-
1
,
0
},
{
0x143
,
"SKEW ("
,
0
,
")"
,
-
1
,
0
},
{
0x144
,
"ZTEST ("
,
0
,
")"
,
3
,
0
},
{
0x145
,
"LARGE ("
,
0
,
")"
,
2
,
0
},
{
0x146
,
"SMALL ("
,
0
,
")"
,
2
,
0
},
{
0x147
,
"QUARTILE ("
,
0
,
")"
,
2
,
0
},
{
0x148
,
"PERCENTILE ("
,
0
,
")"
,
2
,
0
},
{
0x149
,
"PERCENTRANK ("
,
0
,
")"
,
2
,
0
},
{
0x14a
,
"MODE ("
,
0
,
")"
,
-
1
,
0
},
{
0x14b
,
"TRIMMEAN ("
,
0
,
")"
,
2
,
0
},
{
0x14c
,
"TINV ("
,
0
,
")"
,
2
,
0
},
{
0x150
,
"CONCATENATE ("
,
0
,
")"
,
2
,
0
},
{
0x156
,
"RADIANS ("
,
0
,
")"
,
1
,
0
},
{
0x15b
,
"COUNTBLANK ("
,
0
,
")"
,
1
,
0
}
...
...
plugins/excel/ms-formula.c
View file @
9a69edb4
...
...
@@ -56,15 +56,22 @@ FORMULA_OP_DATA formula_op_data[] = {
**/
FORMULA_FUNC_DATA
formula_func_data
[]
=
{
{
0x00
,
"COUNT ("
,
0
,
")"
,
2
,
0
},
{
0x01
,
"0x1 ("
,
0
,
")"
,
8
,
0
},
{
0x02
,
"ISNA ("
,
0
,
")"
,
1
,
0
},
{
0x03
,
"ISERROR ("
,
0
,
")"
,
1
,
0
},
{
0x04
,
"SUM ("
,
0
,
")"
,
-
1
,
0
},
{
0x05
,
"AVERAGE ("
,
0
,
")"
,
-
1
,
0
},
{
0x06
,
"MIN ("
,
0
,
")"
,
-
1
,
0
},
{
0x07
,
"MAX ("
,
0
,
")"
,
-
1
,
0
},
{
0x0f
,
"SIN ("
,
0
,
")"
,
1
,
0
},
{
0x08
,
"0x8 ("
,
0
,
")"
,
8
,
0
},
{
0x09
,
"0x9 ("
,
0
,
")"
,
8
,
0
},
{
0x0a
,
"0xa ("
,
0
,
")"
,
8
,
0
},
{
0x0b
,
"0xb ("
,
0
,
")"
,
8
,
0
},
{
0x0c
,
"STDEV ("
,
0
,
")"
,
-
1
,
0
},
{
0x0d
,
"DOLLAR ("
,
0
,
")"
,
1
,
0
},
{
0x0e
,
"FIXED ("
,
0
,
")"
,
1
,
0
},
{
0x0f
,
"SIN ("
,
0
,
")"
,
1
,
0
},
{
0x10
,
"COS ("
,
0
,
")"
,
1
,
0
},
{
0x11
,
"TAN ("
,
0
,
")"
,
1
,
0
},
{
0x12
,
"ATAN ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -73,16 +80,43 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x16
,
"LN ("
,
0
,
")"
,
1
,
0
},
{
0x17
,
"LOG10 ("
,
0
,
")"
,
1
,
0
},
{
0x1a
,
"SIGN ("
,
0
,
")"
,
1
,
0
},
{
0x1b
,
"0x1b ("
,
0
,
")"
,
8
,
0
},
{
0x1c
,
"0x1c ("
,
0
,
")"
,
8
,
0
},
{
0x1d
,
"0x1d ("
,
0
,
")"
,
8
,
0
},
{
0x1e
,
"REPT ("
,
0
,
")"
,
2
,
0
},
{
0x1f
,
"MID ("
,
0
,
")"
,
3
,
0
},
{
0x20
,
"LEN ("
,
0
,
")"
,
1
,
0
},
{
0x21
,
"VALUE ("
,
0
,
")"
,
1
,
0
},
{
0x22
,
"0x22 ("
,
0
,
")"
,
8
,
0
},
{
0x23
,
"0x23 ("
,
0
,
")"
,
8
,
0
},
{
0x24
,
"AND ("
,
0
,
")"
,
-
1
,
0
},
{
0x25
,
"OR ("
,
0
,
")"
,
-
1
,
0
},
{
0x26
,
"NOT ("
,
0
,
")"
,
1
,
0
},
{
0x27
,
"MOD ("
,
0
,
")"
,
2
,
0
},
{
0x28
,
"0x28 ("
,
0
,
")"
,
8
,
0
},
{
0x29
,
"0x29 ("
,
0
,
")"
,
8
,
0
},
{
0x2a
,
"0x2a ("
,
0
,
")"
,
8
,
0
},
{
0x2b
,
"0x2b ("
,
0
,
")"
,
8
,
0
},
{
0x2c
,
"0x2c ("
,
0
,
")"
,
8
,
0
},
{
0x2d
,
"0x2d ("
,
0
,
")"
,
8
,
0
},
{
0x2e
,
"VAR ("
,
0
,
")"
,
-
1
,
0
},
{
0x30
,
"REPLACE ("
,
0
,
")"
,
2
,
0
},
{
0x31
,
"LINEST ("
,
0
,
")"
,
2
,
0
},
{
0x32
,
"TREND ("
,
0
,
")"
,
4
,
0
},
{
0x33
,
"LOGEST ("
,
0
,
")"
,
1
,
0
},
{
0x34
,
"GROWTH ("
,
0
,
")"
,
-
1
,
0
},
{
0x35
,
"0x35 ("
,
0
,
")"
,
8
,
0
},
{
0x36
,
"0x36 ("
,
0
,
")"
,
8
,
0
},
{
0x37
,
"0x37 ("
,
0
,
")"
,
8
,
0
},
{
0x38
,
"0x38 ("
,
0
,
")"
,
8
,
0
},
{
0x39
,
"0x39 ("
,
0
,
")"
,
8
,
0
},
{
0x3a
,
"0x3a ("
,
0
,
")"
,
8
,
0
},
{
0x3b
,
"0x3b ("
,
0
,
")"
,
8
,
0
},
{
0x3c
,
"0x3c ("
,
0
,
")"
,
8
,
0
},
{
0x3d
,
"0x3d ("
,
0
,
")"
,
8
,
0
},
{
0x3e
,
"0x3e ("
,
0
,
")"
,
8
,
0
},
{
0x3f
,
"RAND ("
,
0
,
")"
,
0
,
0
},
{
0x40
,
"0x40 ("
,
0
,
")"
,
8
,
0
},
{
0x41
,
"DATE ("
,
0
,
")"
,
3
,
0
},
{
0x42
,
"TIME ("
,
0
,
")"
,
3
,
0
},
{
0x43
,
"DAY ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -93,15 +127,43 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x48
,
"MINUTE ("
,
0
,
")"
,
1
,
0
},
{
0x49
,
"SECOND ("
,
0
,
")"
,
1
,
0
},
{
0x4a
,
"NOW ("
,
0
,
")"
,
0
,
0
},
{
0x4b
,
"0x4b ("
,
0
,
")"
,
8
,
0
},
{
0x4c
,
"0x4c ("
,
0
,
")"
,
8
,
0
},
{
0x4d
,
"0x4d ("
,
0
,
")"
,
8
,
0
},
{
0x4e
,
"0x4e ("
,
0
,
")"
,
8
,
0
},
{
0x4f
,
"0x4f ("
,
0
,
")"
,
8
,
0
},
{
0x50
,
"0x50 ("
,
0
,
")"
,
8
,
0
},
{
0x51
,
"0x51 ("
,
0
,
")"
,
8
,
0
},
{
0x52
,
"SEARCH ("
,
0
,
")"
,
3
,
0
},
{
0x53
,
"0x53 ("
,
0
,
")"
,
8
,
0
},
{
0x54
,
"0x54 ("
,
0
,
")"
,
8
,
0
},
{
0x55
,
"0x55 ("
,
0
,
")"
,
8
,
0
},
{
0x56
,
"TYPE ("
,
0
,
")"
,
1
,
0
},
{
0x57
,
"0x57 ("
,
0
,
")"
,
8
,
0
},
{
0x58
,
"0x58 ("
,
0
,
")"
,
8
,
0
},
{
0x59
,
"0x59 ("
,
0
,
")"
,
8
,
0
},
{
0x5a
,
"0x5a ("
,
0
,
")"
,
8
,
0
},
{
0x5b
,
"0x5b ("
,
0
,
")"
,
8
,
0
},
{
0x5c
,
"0x5c ("
,
0
,
")"
,
8
,
0
},
{
0x5d
,
"0x5d ("
,
0
,
")"
,
8
,
0
},
{
0x5e
,
"0x5e ("
,
0
,
")"
,
8
,
0
},
{
0x5f
,
"0x5f ("
,
0
,
")"
,
8
,
0
},
{
0x60
,
"0x60 ("
,
0
,
")"
,
8
,
0
},
{
0x61
,
"ATAN2 ("
,
0
,
")"
,
2
,
0
},
{
0x62
,
"ASIN ("
,
0
,
")"
,
1
,
0
},
{
0x63
,
"ACOS ("
,
0
,
")"
,
1
,
0
},
{
0x64
,
"0x64 ("
,
0
,
")"
,
8
,
0
},
{
0x65
,
"0x65 ("
,
0
,
")"
,
8
,
0
},
{
0x65
,
"HLOOKUP ("
,
0
,
")"
,
-
1
,
0
},
{
0x66
,
"VLOOKUP ("
,
0
,
")"
,
-
1
,
0
},
{
0x67
,
"0x67 ("
,
0
,
")"
,
8
,
0
},
{
0x68
,
"0x68 ("
,
0
,
")"
,
8
,
0
},
{
0x69
,
"ISREF ("
,
0
,
")"
,
1
,
0
},
{
0x6a
,
"0x6a ("
,
0
,
")"
,
8
,
0
},
{
0x6b
,
"0x6b ("
,
0
,
")"
,
8
,
0
},
{
0x6c
,
"0x6c ("
,
0
,
")"
,
8
,
0
},
{
0x6d
,
"LOG ("
,
0
,
")"
,
1
,
0
},
{
0x6e
,
"0x6e ("
,
0
,
")"
,
8
,
0
},
{
0x6f
,
"CHAR ("
,
0
,
")"
,
1
,
0
},
{
0x70
,
"LOWER ("
,
0
,
")"
,
1
,
0
},
{
0x71
,
"UPPER ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -113,6 +175,8 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x77
,
"0x77 ("
,
0
,
")"
,
2
,
0
},
{
0x78
,
"SUBSTITUTE ("
,
0
,
")"
,
-
1
,
0
},
{
0x79
,
"CODE ("
,
0
,
")"
,
1
,
0
},
{
0x7a
,
"0x7a ("
,
0
,
")"
,
8
,
0
},
{
0x7b
,
"0x7b ("
,
0
,
")"
,
8
,
0
},
{
0x7c
,
"FIND ("
,
0
,
")"
,
-
1
,
0
},
{
0x7d
,
"CELL ("
,
0
,
")"
,
2
,
0
},
{
0x7e
,
"ISERR ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -121,13 +185,28 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0x81
,
"ISBLANK ("
,
0
,
")"
,
1
,
0
},
{
0x82
,
"T ("
,
0
,
")"
,
1
,
0
},
{
0x83
,
"N ("
,
0
,
")"
,
1
,
0
},
{
0x84
,
"0x84 ("
,
0
,
")"
,
8
,
0
},
{
0x85
,
"0x85 ("
,
0
,
")"
,
8
,
0
},
{
0x86
,
"0x86 ("
,
0
,
")"
,
8
,
0
},
{
0x87
,
"0x87 ("
,
0
,
")"
,
8
,
0
},
{
0x88
,
"0x88 ("
,
0
,
")"
,
8
,
0
},
{
0x89
,
"0x89 ("
,
0
,
")"
,
8
,
0
},
{
0x8a
,
"0x8a ("
,
0
,
")"
,
8
,
0
},
{
0x8b
,
"0x8b ("
,
0
,
")"
,
8
,
0
},
{
0x8c
,
"DATEVALUE ("
,
0
,
")"
,
1
,
0
},
/* { 0xa2, "CLEAN (", 0, ")", 1, 0 }, */
{
0x8d
,
"0x8d ("
,
0
,
")"
,
8
,
0
},
{
0x8e
,
"0x8e ("
,
0
,
")"
,
8
,
0
},
{
0x8f
,
"0x8f ("
,
0
,
")"
,
8
,
0
},
{
0xa2
,
"CLEAN ("
,
0
,
")"
,
1
,
0
},
{
0xa9
,
"COUNTA ("
,
0
,
")"
,
-
1
,
0
},
{
0xbe
,
"ISNONTEXT ("
,
0
,
")"
,
1
,
0
},
{
0xc1
,
"STDEVP ("
,
0
,
")"
,
-
1
,
0
},
{
0xc2
,
"VARP ("
,
0
,
")"
,
-
1
,
0
},
{
0xc5
,
"TRUNC ("
,
0
,
")"
,
1
,
0
},
{
0xc6
,
"ISLOGICAL ("
,
0
,
")"
,
1
,
0
},
{
0xbe
,
"ISNONTEXT ("
,
0
,
")"
,
1
,
0
},
{
0xdc
,
"DAYS360 ("
,
0
,
")"
,
2
,
0
},
{
0xdd
,
"TODAY ("
,
0
,
")"
,
0
,
0
},
{
0xe3
,
"MEDIAN ("
,
0
,
")"
,
-
1
,
0
},
{
0xe5
,
"SINH ("
,
0
,
")"
,
1
,
0
},
{
0xe6
,
"COSH ("
,
0
,
")"
,
1
,
0
},
{
0xe7
,
"TANH ("
,
0
,
")"
,
1
,
0
},
...
...
@@ -135,8 +214,68 @@ FORMULA_FUNC_DATA formula_func_data[] =
{
0xe9
,
"ACOSH ("
,
0
,
")"
,
1
,
0
},
{
0xea
,
"ATANH ("
,
0
,
")"
,
1
,
0
},
{
0xf4
,
"INFO ("
,
0
,
")"
,
1
,
0
},
{
0xfc
,
"FREQUENCY ("
,
0
,
")"
,
2
,
0
},
{
0x105
,
"ERROR.TYPE ("
,
0
,
")"
,
1
,
0
},
{
0x10d
,
"AVEDEV ("
,
0
,
")"
,
-
1
,
0
},
{
0x10e
,
"BETADIST ("
,
0
,
")"
,
3
,
0
},
{
0x10f
,
"GAMMALN ("
,
0
,
")"
,
1
,
0
},
{
0x110
,
"BETAINV ("
,
0
,
")"
,
3
,
0
},
{
0x111
,
"BINOMDIST ("
,
0
,
")"
,
4
,
0
},
{
0x112
,
"CHIDIST ("
,
0
,
")"
,
2
,
0
},
{
0x113
,
"CHIINV ("
,
0
,
")"
,
2
,
0
},
{
0x114
,
"0x114 ("
,
0
,
")"
,
3
,
0
},
{
0x115
,
"CONFIDENCE ("
,
0
,
")"
,
3
,
0
},
{
0x116
,
"CRITBINOM ("
,
0
,
")"
,
3
,
0
},
{
0x117
,
"0x117 ("
,
0
,
")"
,
8
,
0
},
{
0x118
,
"EXPONDIST ("
,
0
,
")"
,
3
,
0
},
{
0x119
,
"FDIST ("
,
0
,
")"
,
3
,
0
},
{
0x11a
,
"FINV ("
,
0
,
")"
,
3
,
0
},
{
0x11b
,
"FISHER ("
,
0
,
")"
,
1
,
0
},
{
0x11c
,
"FISHERINV ("
,
0
,
")"
,
1
,
0
},
{
0x11e
,
"GAMMADIST ("
,
0
,
")"
,
4
,
0
},
{
0x11f
,
"GAMMAINV ("
,
0
,
")"
,
3
,
0
},
{
0x120
,
"CEILING ("
,
0
,
")"
,
2
,
0
},
{
0x121
,
"HYPGEOMDIST ("
,
0
,
")"
,
4
,
0
},
{
0x122
,
"LOGNOMRDIST ("
,
0
,
")"
,
3
,
0
},
{
0x123
,
"LOGINV ("
,
0
,
")"
,
3
,
0
},
{
0x124
,
"NEGBINOMDIST ("
,
0
,
")"
,
3
,
0
},
{
0x125
,
"NORMDIST ("
,
0
,
")"
,
4
,
0
},
{
0x126
,
"NOMRSDIST ("
,
0
,
")"
,
1
,
0
},
{
0x127
,
"NORMINV ("
,
0
,
")"
,
3
,
0
},
{
0x128
,
"NORMSINV ("
,
0
,
")"
,
1
,
0
},
{
0x129
,
"STANDARDIZE ("
,
0
,
")"
,
3
,
0
},
{
0x12a
,
"0x12a ("
,
0
,
")"
,
8
,
0
},
{
0x12b
,
"PERMUT ("
,
0
,
")"
,
2
,
0
},
{
0x12c
,
"POISSON ("
,
0
,
")"
,
3
,
0
},
{
0x12d
,
"TDIST ("
,
0
,
")"
,
3
,
0
},
{
0x12e
,
"WEIBULL ("
,
0
,
")"
,
4
,
0
},
{
0x12f
,
"ZTEST ("
,
0
,
")"
,
3
,
0
},
{
0x132
,
"CHITEST ("
,
0
,
")"
,
2
,
0
},
{
0x133
,
"CORREL ("
,
0
,
")"
,
2
,
0
},
{
0x134
,
"COVAR ("
,
0
,
")"
,
2
,
0
},
{
0x135
,
"FORECAST ("
,
0
,
")"
,
3
,
0
},
{
0x136
,
"FTEST ("
,
0
,
")"
,
2
,
0
},
{
0x137
,
"INTERCEPT ("
,
0
,
")"
,
2
,
0
},
{
0x138
,
"PEARSON ("
,
0
,
")"
,
2
,
0
},
{
0x139
,
"RSQ ("
,
0
,
")"
,
2
,
0
},
{
0x13a
,
"STEYX ("
,
0
,
")"
,
2
,
0
},
{
0x13b
,
"SLOPE ("
,
0
,
")"
,
2
,
0
},
{
0x13c
,
"TTEST ("
,
0
,
")"
,
4
,
0
},
{
0x13d
,
"PROB ("
,
0
,
")"
,
3
,
0
},
{
0x13e
,
"DEVSQ ("
,
0
,
")"
,
-
1
,
0
},
{
0x13f
,
"GEOMEAN ("
,
0
,
")"
,
-
1
,
0
},
{
0x140
,
"HARMEAN ("
,
0
,
")"
,
-
1
,
0
},
{
0x142
,
"KURT ("
,
0
,
")"
,
-
1
,
0
},
{
0x143
,
"SKEW ("
,
0
,
")"
,
-
1
,
0
},
{
0x144
,
"ZTEST ("
,
0
,
")"
,
3
,
0
},
{
0x145
,
"LARGE ("
,
0
,
")"
,
2
,
0
},
{
0x146
,
"SMALL ("
,
0
,
")"
,
2
,
0
},
{
0x147
,
"QUARTILE ("
,
0
,
")"
,
2
,
0
},
{
0x148
,
"PERCENTILE ("
,
0
,
")"
,
2
,
0
},
{
0x149
,
"PERCENTRANK ("
,
0
,
")"
,
2
,
0
},
{
0x14a
,
"MODE ("
,
0
,
")"
,
-
1
,
0
},
{
0x14b
,
"TRIMMEAN ("
,
0
,
")"
,
2
,
0
},
{
0x14c
,
"TINV ("
,
0
,
")"
,
2
,
0
},
{
0x150
,
"CONCATENATE ("
,
0
,
")"
,
2
,
0
},
{
0x156
,
"RADIANS ("
,
0
,
")"
,
1
,
0
},
{
0x15b
,
"COUNTBLANK ("
,
0
,
")"
,
1
,
0
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment