@node-projects/excelforge 2.4.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/.github/FUNDING.yml +4 -0
  2. package/FEATURES.md +294 -0
  3. package/README.md +628 -12
  4. package/dist/core/SharedStrings.js +6 -2
  5. package/dist/core/SharedStrings.js.map +1 -1
  6. package/dist/core/Workbook.d.ts +43 -1
  7. package/dist/core/Workbook.js +881 -58
  8. package/dist/core/Workbook.js.map +1 -1
  9. package/dist/core/WorkbookReader.d.ts +18 -4
  10. package/dist/core/WorkbookReader.js +1386 -20
  11. package/dist/core/WorkbookReader.js.map +1 -1
  12. package/dist/core/Worksheet.d.ts +136 -2
  13. package/dist/core/Worksheet.js +828 -63
  14. package/dist/core/Worksheet.js.map +1 -1
  15. package/dist/core/types.d.ts +311 -5
  16. package/dist/core/types.js +12 -1
  17. package/dist/core/types.js.map +1 -1
  18. package/dist/features/ChartBuilder.d.ts +9 -1
  19. package/dist/features/ChartBuilder.js +140 -14
  20. package/dist/features/ChartBuilder.js.map +1 -1
  21. package/dist/features/CsvModule.d.ts +11 -0
  22. package/dist/features/CsvModule.js +137 -0
  23. package/dist/features/CsvModule.js.map +1 -0
  24. package/dist/features/Encryption.d.ts +6 -0
  25. package/dist/features/Encryption.js +806 -0
  26. package/dist/features/Encryption.js.map +1 -0
  27. package/dist/features/FormControlBuilder.d.ts +6 -0
  28. package/dist/features/FormControlBuilder.js +135 -0
  29. package/dist/features/FormControlBuilder.js.map +1 -0
  30. package/dist/features/FormulaEngine.d.ts +22 -0
  31. package/dist/features/FormulaEngine.js +498 -0
  32. package/dist/features/FormulaEngine.js.map +1 -0
  33. package/dist/features/HtmlModule.d.ts +22 -0
  34. package/dist/features/HtmlModule.js +1441 -0
  35. package/dist/features/HtmlModule.js.map +1 -0
  36. package/dist/features/JsonModule.d.ts +10 -0
  37. package/dist/features/JsonModule.js +76 -0
  38. package/dist/features/JsonModule.js.map +1 -0
  39. package/dist/features/PdfModule.d.ts +30 -0
  40. package/dist/features/PdfModule.js +1567 -0
  41. package/dist/features/PdfModule.js.map +1 -0
  42. package/dist/features/PivotTableBuilder.d.ts +7 -0
  43. package/dist/features/PivotTableBuilder.js +170 -0
  44. package/dist/features/PivotTableBuilder.js.map +1 -0
  45. package/dist/features/Signing.d.ts +12 -0
  46. package/dist/features/Signing.js +326 -0
  47. package/dist/features/Signing.js.map +1 -0
  48. package/dist/features/TableBuilder.js +2 -2
  49. package/dist/features/TableBuilder.js.map +1 -1
  50. package/dist/index-min.js +609 -147
  51. package/dist/index.d.ts +19 -1
  52. package/dist/index.js +11 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/styles/StyleRegistry.d.ts +14 -0
  55. package/dist/styles/StyleRegistry.js +95 -30
  56. package/dist/styles/StyleRegistry.js.map +1 -1
  57. package/dist/utils/helpers.d.ts +4 -0
  58. package/dist/utils/helpers.js +64 -14
  59. package/dist/utils/helpers.js.map +1 -1
  60. package/dist/utils/zip.js +145 -73
  61. package/dist/utils/zip.js.map +1 -1
  62. package/dist/vba/VbaProject.d.ts +31 -0
  63. package/dist/vba/VbaProject.js +576 -0
  64. package/dist/vba/VbaProject.js.map +1 -0
  65. package/dist/vba/cfb.d.ts +7 -0
  66. package/dist/vba/cfb.js +352 -0
  67. package/dist/vba/cfb.js.map +1 -0
  68. package/dist/vba/ovba.d.ts +2 -0
  69. package/dist/vba/ovba.js +137 -0
  70. package/dist/vba/ovba.js.map +1 -0
  71. package/package.json +4 -3
  72. package/validator.cs +0 -155
  73. package/validatorEpplus.cs +0 -27
  74. package/validatorReadData.cs +0 -111
@@ -0,0 +1,498 @@
1
+ import { cellRefToIndices, parseRange, } from '../utils/helpers.js';
2
+ function toNum(v) {
3
+ if (typeof v === 'number')
4
+ return v;
5
+ if (typeof v === 'boolean')
6
+ return v ? 1 : 0;
7
+ if (typeof v === 'string') {
8
+ const n = Number(v);
9
+ return isNaN(n) ? 0 : n;
10
+ }
11
+ return 0;
12
+ }
13
+ function isNum(v) {
14
+ return typeof v === 'number' || (typeof v === 'string' && v !== '' && !isNaN(Number(v)));
15
+ }
16
+ export class FormulaEngine {
17
+ constructor() {
18
+ this.calculating = new Set();
19
+ }
20
+ calculateWorkbook(wb) {
21
+ const sheets = wb.getSheets();
22
+ for (const ws of sheets) {
23
+ this.calculateSheet(ws);
24
+ }
25
+ }
26
+ calculateSheet(ws) {
27
+ this.ws = ws;
28
+ const cells = ws.readAllCells();
29
+ for (const { row, col, cell } of cells) {
30
+ if (cell.formula) {
31
+ this.calculating.clear();
32
+ const result = this.evaluate(cell.formula, row, col);
33
+ cell.value = result;
34
+ }
35
+ }
36
+ }
37
+ getCellValue(row, col) {
38
+ const cell = this.ws.getCell(row, col);
39
+ if (cell.formula) {
40
+ const key = `${row},${col}`;
41
+ if (this.calculating.has(key))
42
+ return 0;
43
+ this.calculating.add(key);
44
+ const result = this.evaluate(cell.formula, row, col);
45
+ cell.value = result;
46
+ this.calculating.delete(key);
47
+ }
48
+ return cell.value ?? null;
49
+ }
50
+ resolveRange(ref) {
51
+ const rangePart = ref.includes('!') ? ref.split('!')[1] : ref;
52
+ const clean = rangePart.replace(/\$/g, '');
53
+ if (clean.includes(':')) {
54
+ const { startRow, startCol, endRow, endCol } = parseRange(clean);
55
+ const values = [];
56
+ for (let r = startRow; r <= endRow; r++) {
57
+ for (let c = startCol; c <= endCol; c++) {
58
+ values.push(this.getCellValue(r, c));
59
+ }
60
+ }
61
+ return values;
62
+ }
63
+ const { row, col } = cellRefToIndices(clean);
64
+ return [this.getCellValue(row, col)];
65
+ }
66
+ evaluate(formula, row, col) {
67
+ try {
68
+ return this.parseExpression(formula.trim(), 0, row, col).value;
69
+ }
70
+ catch {
71
+ return '#VALUE!';
72
+ }
73
+ }
74
+ parseExpression(expr, pos, row, col) {
75
+ return this.parseComparison(expr, pos, row, col);
76
+ }
77
+ parseComparison(expr, pos, row, col) {
78
+ let result = this.parseAddSub(expr, pos, row, col);
79
+ let { value, pos: p } = result;
80
+ p = this.skipSpaces(expr, p);
81
+ const ops = ['>=', '<=', '<>', '>', '<', '='];
82
+ for (const op of ops) {
83
+ if (expr.slice(p, p + op.length) === op) {
84
+ const r = this.parseAddSub(expr, p + op.length, row, col);
85
+ const lv = value, rv = r.value;
86
+ switch (op) {
87
+ case '>=':
88
+ value = toNum(lv) >= toNum(rv);
89
+ break;
90
+ case '<=':
91
+ value = toNum(lv) <= toNum(rv);
92
+ break;
93
+ case '<>':
94
+ value = lv !== rv;
95
+ break;
96
+ case '>':
97
+ value = toNum(lv) > toNum(rv);
98
+ break;
99
+ case '<':
100
+ value = toNum(lv) < toNum(rv);
101
+ break;
102
+ case '=':
103
+ value = lv === rv || toNum(lv) === toNum(rv);
104
+ break;
105
+ }
106
+ p = r.pos;
107
+ break;
108
+ }
109
+ }
110
+ return { value, pos: p };
111
+ }
112
+ parseAddSub(expr, pos, row, col) {
113
+ let result = this.parseMulDiv(expr, pos, row, col);
114
+ let { value, pos: p } = result;
115
+ while (p < expr.length) {
116
+ p = this.skipSpaces(expr, p);
117
+ if (expr[p] === '+') {
118
+ const r = this.parseMulDiv(expr, p + 1, row, col);
119
+ value = toNum(value) + toNum(r.value);
120
+ p = r.pos;
121
+ }
122
+ else if (expr[p] === '-') {
123
+ const r = this.parseMulDiv(expr, p + 1, row, col);
124
+ value = toNum(value) - toNum(r.value);
125
+ p = r.pos;
126
+ }
127
+ else if (expr[p] === '&') {
128
+ const r = this.parseMulDiv(expr, p + 1, row, col);
129
+ value = String(value ?? '') + String(r.value ?? '');
130
+ p = r.pos;
131
+ }
132
+ else {
133
+ break;
134
+ }
135
+ }
136
+ return { value, pos: p };
137
+ }
138
+ parseMulDiv(expr, pos, row, col) {
139
+ let result = this.parsePower(expr, pos, row, col);
140
+ let { value, pos: p } = result;
141
+ while (p < expr.length) {
142
+ p = this.skipSpaces(expr, p);
143
+ if (expr[p] === '*') {
144
+ const r = this.parsePower(expr, p + 1, row, col);
145
+ value = toNum(value) * toNum(r.value);
146
+ p = r.pos;
147
+ }
148
+ else if (expr[p] === '/') {
149
+ const r = this.parsePower(expr, p + 1, row, col);
150
+ const d = toNum(r.value);
151
+ value = d === 0 ? '#DIV/0!' : toNum(value) / d;
152
+ p = r.pos;
153
+ }
154
+ else {
155
+ break;
156
+ }
157
+ }
158
+ return { value, pos: p };
159
+ }
160
+ parsePower(expr, pos, row, col) {
161
+ let result = this.parseUnary(expr, pos, row, col);
162
+ let { value, pos: p } = result;
163
+ p = this.skipSpaces(expr, p);
164
+ if (p < expr.length && expr[p] === '^') {
165
+ const r = this.parseUnary(expr, p + 1, row, col);
166
+ value = Math.pow(toNum(value), toNum(r.value));
167
+ p = r.pos;
168
+ }
169
+ return { value, pos: p };
170
+ }
171
+ parseUnary(expr, pos, row, col) {
172
+ pos = this.skipSpaces(expr, pos);
173
+ if (expr[pos] === '-') {
174
+ const r = this.parseAtom(expr, pos + 1, row, col);
175
+ return { value: -toNum(r.value), pos: r.pos };
176
+ }
177
+ if (expr[pos] === '+') {
178
+ return this.parseAtom(expr, pos + 1, row, col);
179
+ }
180
+ return this.parseAtom(expr, pos, row, col);
181
+ }
182
+ parseAtom(expr, pos, row, col) {
183
+ pos = this.skipSpaces(expr, pos);
184
+ if (expr[pos] === '(') {
185
+ const r = this.parseExpression(expr, pos + 1, row, col);
186
+ let p = this.skipSpaces(expr, r.pos);
187
+ if (expr[p] === ')')
188
+ p++;
189
+ return { value: r.value, pos: p };
190
+ }
191
+ if (expr[pos] === '"') {
192
+ let end = pos + 1;
193
+ let s = '';
194
+ while (end < expr.length) {
195
+ if (expr[end] === '"') {
196
+ if (expr[end + 1] === '"') {
197
+ s += '"';
198
+ end += 2;
199
+ continue;
200
+ }
201
+ break;
202
+ }
203
+ s += expr[end++];
204
+ }
205
+ return { value: s, pos: end + 1 };
206
+ }
207
+ if (/[0-9.]/.test(expr[pos])) {
208
+ let end = pos;
209
+ while (end < expr.length && /[0-9.eE+-]/.test(expr[end]) && !(end > pos && (expr[end] === '+' || expr[end] === '-') && !/[eE]/.test(expr[end - 1])))
210
+ end++;
211
+ return { value: parseFloat(expr.slice(pos, end)), pos: end };
212
+ }
213
+ if (expr.slice(pos, pos + 4).toUpperCase() === 'TRUE') {
214
+ return { value: true, pos: pos + 4 };
215
+ }
216
+ if (expr.slice(pos, pos + 5).toUpperCase() === 'FALSE') {
217
+ return { value: false, pos: pos + 5 };
218
+ }
219
+ let end = pos;
220
+ while (end < expr.length && /[A-Za-z0-9_$!:]/.test(expr[end]))
221
+ end++;
222
+ const token = expr.slice(pos, end);
223
+ let p = this.skipSpaces(expr, end);
224
+ if (expr[p] === '(') {
225
+ const funcName = token.toUpperCase();
226
+ const args = this.parseArgList(expr, p, row, col);
227
+ return { value: this.callFunction(funcName, args.args, row, col), pos: args.pos };
228
+ }
229
+ if (token.includes(':') || /^[A-Z]+[0-9]+$/i.test(token.replace(/\$/g, '')) || token.includes('!')) {
230
+ const values = this.resolveRange(token);
231
+ return { value: (values.length === 1 ? values[0] : values[0]), pos: end };
232
+ }
233
+ return { value: token, pos: end };
234
+ }
235
+ parseArgList(expr, pos, row, col) {
236
+ pos++;
237
+ const args = [];
238
+ if (this.skipSpaces(expr, pos) < expr.length && expr[this.skipSpaces(expr, pos)] === ')') {
239
+ return { args: [], pos: this.skipSpaces(expr, pos) + 1 };
240
+ }
241
+ while (pos < expr.length) {
242
+ pos = this.skipSpaces(expr, pos);
243
+ const rangeMatch = expr.slice(pos).match(/^([A-Z$]+[0-9$]+:[A-Z$]+[0-9$]+|[A-Za-z]+![A-Z$]+[0-9$]+:[A-Z$]+[0-9$]+)/i);
244
+ if (rangeMatch) {
245
+ const rangeRef = rangeMatch[1];
246
+ args.push(this.resolveRange(rangeRef));
247
+ pos += rangeRef.length;
248
+ }
249
+ else {
250
+ const r = this.parseExpression(expr, pos, row, col);
251
+ args.push([r.value]);
252
+ pos = r.pos;
253
+ }
254
+ pos = this.skipSpaces(expr, pos);
255
+ if (expr[pos] === ',') {
256
+ pos++;
257
+ continue;
258
+ }
259
+ if (expr[pos] === ')') {
260
+ pos++;
261
+ break;
262
+ }
263
+ break;
264
+ }
265
+ return { args, pos };
266
+ }
267
+ skipSpaces(s, pos) {
268
+ while (pos < s.length && s[pos] === ' ')
269
+ pos++;
270
+ return pos;
271
+ }
272
+ callFunction(name, args, row, col) {
273
+ const flat = (a) => a.flat();
274
+ const nums = (a) => flat(a).filter(v => typeof v === 'number' || (typeof v === 'string' && v !== '' && !isNaN(Number(v)))).map(v => Number(v));
275
+ switch (name) {
276
+ case 'SUM': return nums(args).reduce((a, b) => a + b, 0);
277
+ case 'AVERAGE': {
278
+ const n = nums(args);
279
+ return n.length ? n.reduce((a, b) => a + b, 0) / n.length : 0;
280
+ }
281
+ case 'COUNT': return nums(args).length;
282
+ case 'COUNTA': return flat(args).filter(v => v != null && v !== '').length;
283
+ case 'COUNTBLANK': return flat(args).filter(v => v == null || v === '').length;
284
+ case 'MAX': {
285
+ const n = nums(args);
286
+ return n.length ? Math.max(...n) : 0;
287
+ }
288
+ case 'MIN': {
289
+ const n = nums(args);
290
+ return n.length ? Math.min(...n) : 0;
291
+ }
292
+ case 'ABS': return Math.abs(toNum(flat(args)[0]));
293
+ case 'ROUND': {
294
+ const v = toNum(flat(args)[0]);
295
+ const d = toNum(flat(args)[1] ?? 0);
296
+ const f = Math.pow(10, d);
297
+ return Math.round(v * f) / f;
298
+ }
299
+ case 'ROUNDUP': {
300
+ const v = toNum(flat(args)[0]);
301
+ const d = toNum(flat(args)[1] ?? 0);
302
+ const f = Math.pow(10, d);
303
+ return Math.ceil(v * f) / f;
304
+ }
305
+ case 'ROUNDDOWN': {
306
+ const v = toNum(flat(args)[0]);
307
+ const d = toNum(flat(args)[1] ?? 0);
308
+ const f = Math.pow(10, d);
309
+ return Math.floor(v * f) / f;
310
+ }
311
+ case 'INT': return Math.floor(toNum(flat(args)[0]));
312
+ case 'MOD': return toNum(flat(args)[0]) % toNum(flat(args)[1]);
313
+ case 'POWER': return Math.pow(toNum(flat(args)[0]), toNum(flat(args)[1]));
314
+ case 'SQRT': return Math.sqrt(toNum(flat(args)[0]));
315
+ case 'PI': return Math.PI;
316
+ case 'RAND': return Math.random();
317
+ case 'RANDBETWEEN': {
318
+ const lo = toNum(flat(args)[0]);
319
+ const hi = toNum(flat(args)[1]);
320
+ return Math.floor(Math.random() * (hi - lo + 1)) + lo;
321
+ }
322
+ case 'SUMPRODUCT': {
323
+ if (args.length < 2)
324
+ return 0;
325
+ const len = args[0].length;
326
+ let sum = 0;
327
+ for (let i = 0; i < len; i++) {
328
+ let prod = 1;
329
+ for (const a of args)
330
+ prod *= toNum((a[i] ?? 0));
331
+ sum += prod;
332
+ }
333
+ return sum;
334
+ }
335
+ case 'SUMIF': {
336
+ const range = args[0] ?? [];
337
+ const criteria = String(flat(args.slice(1, 2))[0] ?? '');
338
+ const sumRange = args[2] ?? range;
339
+ let sum = 0;
340
+ for (let i = 0; i < range.length; i++) {
341
+ if (this.matchCriteria(range[i], criteria))
342
+ sum += toNum((sumRange[i] ?? 0));
343
+ }
344
+ return sum;
345
+ }
346
+ case 'COUNTIF': {
347
+ const range = args[0] ?? [];
348
+ const criteria = String(flat(args.slice(1, 2))[0] ?? '');
349
+ return range.filter(v => this.matchCriteria(v, criteria)).length;
350
+ }
351
+ case 'IF': {
352
+ const cond = flat(args.slice(0, 1))[0];
353
+ const t = flat(args.slice(1, 2))[0] ?? true;
354
+ const f = args.length > 2 ? flat(args.slice(2, 3))[0] ?? false : false;
355
+ return cond ? t : f;
356
+ }
357
+ case 'AND': return flat(args).every(v => !!v);
358
+ case 'OR': return flat(args).some(v => !!v);
359
+ case 'NOT': return !flat(args)[0];
360
+ case 'IFERROR': {
361
+ const v = flat(args.slice(0, 1))[0];
362
+ return typeof v === 'string' && v.startsWith('#') ? flat(args.slice(1, 2))[0] ?? '' : v;
363
+ }
364
+ case 'IFNA': {
365
+ const v = flat(args.slice(0, 1))[0];
366
+ return v === '#N/A' ? flat(args.slice(1, 2))[0] ?? '' : v;
367
+ }
368
+ case 'CONCATENATE':
369
+ case 'CONCAT': return flat(args).map(v => String(v ?? '')).join('');
370
+ case 'TEXTJOIN': {
371
+ const delim = String(flat(args.slice(0, 1))[0] ?? '');
372
+ const ignoreEmpty = !!flat(args.slice(1, 2))[0];
373
+ const vals = flat(args.slice(2));
374
+ const filtered = ignoreEmpty ? vals.filter(v => v != null && v !== '') : vals;
375
+ return filtered.map(v => String(v ?? '')).join(delim);
376
+ }
377
+ case 'LEN': return String(flat(args)[0] ?? '').length;
378
+ case 'LEFT': return String(flat(args)[0] ?? '').slice(0, toNum(flat(args)[1]) || 1);
379
+ case 'RIGHT': {
380
+ const s = String(flat(args)[0] ?? '');
381
+ const n = toNum(flat(args)[1]) || 1;
382
+ return s.slice(-n);
383
+ }
384
+ case 'MID': {
385
+ const s = String(flat(args)[0] ?? '');
386
+ const start = toNum(flat(args)[1]) - 1;
387
+ const len = toNum(flat(args)[2]);
388
+ return s.slice(start, start + len);
389
+ }
390
+ case 'UPPER': return String(flat(args)[0] ?? '').toUpperCase();
391
+ case 'LOWER': return String(flat(args)[0] ?? '').toLowerCase();
392
+ case 'TRIM': return String(flat(args)[0] ?? '').trim().replace(/\s+/g, ' ');
393
+ case 'SUBSTITUTE': {
394
+ const s = String(flat(args)[0] ?? '');
395
+ const old = String(flat(args)[1] ?? '');
396
+ const rep = String(flat(args)[2] ?? '');
397
+ return s.split(old).join(rep);
398
+ }
399
+ case 'FIND':
400
+ case 'SEARCH': {
401
+ const findText = String(flat(args)[0] ?? '');
402
+ const within = String(flat(args)[1] ?? '');
403
+ const start = toNum(flat(args)[2]) || 1;
404
+ const fn = name === 'SEARCH' ? (s) => s.toLowerCase() : (s) => s;
405
+ const idx = fn(within).indexOf(fn(findText), start - 1);
406
+ return idx >= 0 ? idx + 1 : '#VALUE!';
407
+ }
408
+ case 'REPLACE': {
409
+ const s = String(flat(args)[0] ?? '');
410
+ const start = toNum(flat(args)[1]) - 1;
411
+ const numChars = toNum(flat(args)[2]);
412
+ const rep = String(flat(args)[3] ?? '');
413
+ return s.slice(0, start) + rep + s.slice(start + numChars);
414
+ }
415
+ case 'REPT': return String(flat(args)[0] ?? '').repeat(toNum(flat(args)[1]));
416
+ case 'TEXT': return String(flat(args)[0] ?? '');
417
+ case 'VALUE': return toNum(flat(args)[0]);
418
+ case 'EXACT': return String(flat(args)[0] ?? '') === String(flat(args)[1] ?? '');
419
+ case 'VLOOKUP': {
420
+ const lookupVal = flat(args.slice(0, 1))[0];
421
+ const table = args[1] ?? [];
422
+ const colIdx = toNum(flat(args.slice(2, 3))[0]) - 1;
423
+ return '#N/A';
424
+ }
425
+ case 'INDEX': {
426
+ const arr = args[0] ?? [];
427
+ const rowIdx = toNum(flat(args.slice(1, 2))[0]) - 1;
428
+ return arr[rowIdx] ?? '#REF!';
429
+ }
430
+ case 'MATCH': {
431
+ const val = flat(args.slice(0, 1))[0];
432
+ const arr = args[1] ?? [];
433
+ const idx = arr.findIndex(v => v === val || String(v) === String(val));
434
+ return idx >= 0 ? idx + 1 : '#N/A';
435
+ }
436
+ case 'ISBLANK': return flat(args)[0] == null || flat(args)[0] === '';
437
+ case 'ISNUMBER': return typeof flat(args)[0] === 'number';
438
+ case 'ISTEXT': return typeof flat(args)[0] === 'string';
439
+ case 'ISLOGICAL': return typeof flat(args)[0] === 'boolean';
440
+ case 'ISERROR': {
441
+ const v = flat(args)[0];
442
+ return typeof v === 'string' && v.startsWith('#');
443
+ }
444
+ case 'ISNA': return flat(args)[0] === '#N/A';
445
+ case 'TYPE': {
446
+ const v = flat(args)[0];
447
+ if (typeof v === 'number')
448
+ return 1;
449
+ if (typeof v === 'string')
450
+ return 2;
451
+ if (typeof v === 'boolean')
452
+ return 4;
453
+ return 1;
454
+ }
455
+ case 'ROW': return row;
456
+ case 'COLUMN': return col;
457
+ case 'NA': return '#N/A';
458
+ case 'TODAY': return new Date().toISOString().slice(0, 10);
459
+ case 'NOW': return new Date().toISOString();
460
+ case 'YEAR': return new Date(String(flat(args)[0])).getFullYear();
461
+ case 'MONTH': return new Date(String(flat(args)[0])).getMonth() + 1;
462
+ case 'DAY': return new Date(String(flat(args)[0])).getDate();
463
+ case 'GETPIVOTDATA': {
464
+ const dataField = String(flat(args.slice(0, 1))[0] ?? '');
465
+ return dataField || '#REF!';
466
+ }
467
+ default: return '#NAME?';
468
+ }
469
+ }
470
+ matchCriteria(value, criteria) {
471
+ const ops = ['>=', '<=', '<>', '>', '<', '='];
472
+ for (const op of ops) {
473
+ if (criteria.startsWith(op)) {
474
+ const cv = criteria.slice(op.length);
475
+ const nv = toNum(value);
476
+ const nc = Number(cv);
477
+ if (!isNaN(nc)) {
478
+ switch (op) {
479
+ case '>=': return nv >= nc;
480
+ case '<=': return nv <= nc;
481
+ case '<>': return nv !== nc;
482
+ case '>': return nv > nc;
483
+ case '<': return nv < nc;
484
+ case '=': return nv === nc;
485
+ }
486
+ }
487
+ switch (op) {
488
+ case '<>': return String(value) !== cv;
489
+ case '=': return String(value) === cv;
490
+ }
491
+ }
492
+ }
493
+ if (typeof value === 'number')
494
+ return value === Number(criteria);
495
+ return String(value) === criteria;
496
+ }
497
+ }
498
+ //# sourceMappingURL=FormulaEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormulaEngine.js","sourceRoot":"","sources":["../../src/features/FormulaEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Worksheet } from '../core/Worksheet.js';
2
+ import type { Workbook } from '../core/Workbook.js';
3
+ export interface HtmlExportOptions {
4
+ includeStyles?: boolean;
5
+ fullDocument?: boolean;
6
+ title?: string;
7
+ classPrefix?: string;
8
+ includeConditionalFormatting?: boolean;
9
+ includeCharts?: boolean;
10
+ includeSparklines?: boolean;
11
+ includeColumnWidths?: boolean;
12
+ skipHidden?: boolean;
13
+ printAreaOnly?: boolean;
14
+ sheetName?: string;
15
+ evaluateFormulas?: boolean;
16
+ }
17
+ export interface WorkbookHtmlExportOptions extends HtmlExportOptions {
18
+ sheets?: string[];
19
+ includeTabs?: boolean;
20
+ }
21
+ export declare function worksheetToHtml(ws: Worksheet, options?: HtmlExportOptions): string;
22
+ export declare function workbookToHtml(wb: Workbook, options?: WorkbookHtmlExportOptions): string;