@node-projects/excelforge 2.0.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 (48) hide show
  1. package/README.md +566 -0
  2. package/dist/core/SharedStrings.d.ts +11 -0
  3. package/dist/core/SharedStrings.js +67 -0
  4. package/dist/core/SharedStrings.js.map +1 -0
  5. package/dist/core/Workbook.d.ts +42 -0
  6. package/dist/core/Workbook.js +459 -0
  7. package/dist/core/Workbook.js.map +1 -0
  8. package/dist/core/WorkbookReader.d.ts +43 -0
  9. package/dist/core/WorkbookReader.js +563 -0
  10. package/dist/core/WorkbookReader.js.map +1 -0
  11. package/dist/core/Worksheet.d.ts +78 -0
  12. package/dist/core/Worksheet.js +568 -0
  13. package/dist/core/Worksheet.js.map +1 -0
  14. package/dist/core/properties.d.ts +91 -0
  15. package/dist/core/properties.js +265 -0
  16. package/dist/core/properties.js.map +1 -0
  17. package/dist/core/types.d.ts +388 -0
  18. package/dist/core/types.js +2 -0
  19. package/dist/core/types.js.map +1 -0
  20. package/dist/features/ChartBuilder.d.ts +2 -0
  21. package/dist/features/ChartBuilder.js +165 -0
  22. package/dist/features/ChartBuilder.js.map +1 -0
  23. package/dist/features/TableBuilder.d.ts +2 -0
  24. package/dist/features/TableBuilder.js +36 -0
  25. package/dist/features/TableBuilder.js.map +1 -0
  26. package/dist/index-min.js +259 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.js +7 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/styles/StyleRegistry.d.ts +19 -0
  31. package/dist/styles/StyleRegistry.js +215 -0
  32. package/dist/styles/StyleRegistry.js.map +1 -0
  33. package/dist/styles/builders.d.ts +91 -0
  34. package/dist/styles/builders.js +136 -0
  35. package/dist/styles/builders.js.map +1 -0
  36. package/dist/utils/helpers.d.ts +26 -0
  37. package/dist/utils/helpers.js +85 -0
  38. package/dist/utils/helpers.js.map +1 -0
  39. package/dist/utils/xmlParser.d.ts +17 -0
  40. package/dist/utils/xmlParser.js +179 -0
  41. package/dist/utils/xmlParser.js.map +1 -0
  42. package/dist/utils/zip.d.ts +11 -0
  43. package/dist/utils/zip.js +571 -0
  44. package/dist/utils/zip.js.map +1 -0
  45. package/dist/utils/zipReader.d.ts +6 -0
  46. package/dist/utils/zipReader.js +84 -0
  47. package/dist/utils/zipReader.js.map +1 -0
  48. package/package.json +28 -0
@@ -0,0 +1,563 @@
1
+ import { readZip, entryText } from '../utils/zipReader.js';
2
+ import { parseXml, child, children, localName, nodeToXml } from '../utils/xmlParser.js';
3
+ import { parseCoreXml, parseAppXml, parseCustomXml, } from './properties.js';
4
+ import { Worksheet } from './Worksheet.js';
5
+ import { cellRefToIndices } from '../utils/helpers.js';
6
+ function parseRels(xml) {
7
+ const map = new Map();
8
+ try {
9
+ const root = parseXml(xml);
10
+ for (const c of root.children) {
11
+ if (localName(c.tag) === 'Relationship') {
12
+ map.set(c.attrs['Id'] ?? '', {
13
+ type: c.attrs['Type'] ?? '',
14
+ target: c.attrs['Target'] ?? '',
15
+ });
16
+ }
17
+ }
18
+ }
19
+ catch { }
20
+ return map;
21
+ }
22
+ function parseContentTypes(xml) {
23
+ const map = new Map();
24
+ try {
25
+ const root = parseXml(xml);
26
+ for (const c of root.children) {
27
+ const ln = localName(c.tag);
28
+ if (ln === 'Override') {
29
+ const part = c.attrs['PartName'] ?? '';
30
+ const ct = c.attrs['ContentType'] ?? '';
31
+ map.set(part.startsWith('/') ? part.slice(1) : part, ct);
32
+ }
33
+ }
34
+ }
35
+ catch { }
36
+ return map;
37
+ }
38
+ function parseStyles(xml) {
39
+ const root = parseXml(xml);
40
+ const numFmts = new Map();
41
+ const xfs = [];
42
+ const builtinFmts = {
43
+ 0: 'General', 1: '0', 2: '0.00', 3: '#,##0', 4: '#,##0.00',
44
+ 9: '0%', 10: '0.00%', 11: '0.00E+00', 12: '# ?/?', 13: '# ??/??',
45
+ 14: 'mm-dd-yy', 15: 'd-mmm-yy', 16: 'd-mmm', 17: 'mmm-yy',
46
+ 18: 'h:mm AM/PM', 19: 'h:mm:ss AM/PM', 20: 'h:mm', 21: 'h:mm:ss',
47
+ 22: 'm/d/yy h:mm', 37: '#,##0 ;(#,##0)', 38: '#,##0 ;[Red](#,##0)',
48
+ 39: '#,##0.00;(#,##0.00)', 40: '#,##0.00;[Red](#,##0.00)',
49
+ 45: 'mm:ss', 46: '[h]:mm:ss', 47: 'mmss.0', 48: '##0.0E+0', 49: '@',
50
+ };
51
+ const numFmtNode = find(root, 'numFmts');
52
+ if (numFmtNode) {
53
+ for (const n of children(numFmtNode, 'numFmt')) {
54
+ const id = parseInt(n.attrs['numFmtId'] ?? '0', 10);
55
+ const code = n.attrs['formatCode'] ?? '';
56
+ numFmts.set(id, code);
57
+ }
58
+ }
59
+ const fontsNode = find(root, 'fonts');
60
+ const fonts = [];
61
+ if (fontsNode) {
62
+ for (const fn of children(fontsNode, 'font')) {
63
+ fonts.push(parseFont(fn));
64
+ }
65
+ }
66
+ const fillsNode = find(root, 'fills');
67
+ const fills = [];
68
+ if (fillsNode) {
69
+ for (const fn of children(fillsNode, 'fill')) {
70
+ fills.push(parseFill(fn));
71
+ }
72
+ }
73
+ const bordersNode = find(root, 'borders');
74
+ const borders = [];
75
+ if (bordersNode) {
76
+ for (const bn of children(bordersNode, 'border')) {
77
+ borders.push(parseBorder(bn));
78
+ }
79
+ }
80
+ const cellXfsNode = find(root, 'cellXfs');
81
+ if (cellXfsNode) {
82
+ for (const xf of children(cellXfsNode, 'xf')) {
83
+ const fontId = parseInt(xf.attrs['fontId'] ?? '0', 10);
84
+ const fillId = parseInt(xf.attrs['fillId'] ?? '0', 10);
85
+ const borderId = parseInt(xf.attrs['borderId'] ?? '0', 10);
86
+ const numFmtId = parseInt(xf.attrs['numFmtId'] ?? '0', 10);
87
+ const applyFont = xf.attrs['applyFont'] === '1';
88
+ const applyFill = xf.attrs['applyFill'] === '1';
89
+ const applyBorder = xf.attrs['applyBorder'] === '1';
90
+ const applyAlignment = xf.attrs['applyAlignment'] === '1';
91
+ const applyNumFmt = xf.attrs['applyNumberFormat'] === '1';
92
+ const applyProt = xf.attrs['applyProtection'] === '1';
93
+ const style = {};
94
+ if (applyFont && fonts[fontId])
95
+ style.font = fonts[fontId];
96
+ if (applyFill && fills[fillId])
97
+ style.fill = fills[fillId];
98
+ if (applyBorder && borders[borderId])
99
+ style.border = borders[borderId];
100
+ if (applyNumFmt && numFmtId !== 0) {
101
+ if (numFmts.has(numFmtId)) {
102
+ style.numberFormat = { formatCode: numFmts.get(numFmtId) };
103
+ }
104
+ else if (builtinFmts[numFmtId]) {
105
+ style.numFmtId = numFmtId;
106
+ }
107
+ }
108
+ const alignNode = child(xf, 'alignment');
109
+ if (applyAlignment && alignNode) {
110
+ style.alignment = parseAlignment(alignNode);
111
+ }
112
+ const protNode = child(xf, 'protection');
113
+ if (applyProt && protNode) {
114
+ if (protNode.attrs['locked'] !== undefined)
115
+ style.locked = protNode.attrs['locked'] !== '0';
116
+ if (protNode.attrs['hidden'] !== undefined)
117
+ style.hidden = protNode.attrs['hidden'] !== '0';
118
+ }
119
+ xfs.push(style);
120
+ }
121
+ }
122
+ return { xfs, numFmts };
123
+ }
124
+ function find(node, localTag) {
125
+ if (localName(node.tag) === localTag)
126
+ return node;
127
+ for (const c of node.children) {
128
+ const r = find(c, localTag);
129
+ if (r)
130
+ return r;
131
+ }
132
+ return undefined;
133
+ }
134
+ function parseFont(node) {
135
+ const f = {};
136
+ for (const c of node.children) {
137
+ switch (localName(c.tag)) {
138
+ case 'b':
139
+ f.bold = c.attrs['val'] !== '0';
140
+ break;
141
+ case 'i':
142
+ f.italic = c.attrs['val'] !== '0';
143
+ break;
144
+ case 'strike':
145
+ f.strike = c.attrs['val'] !== '0';
146
+ break;
147
+ case 'u':
148
+ f.underline = c.attrs['val'] ?? 'single';
149
+ break;
150
+ case 'sz':
151
+ f.size = parseFloat(c.attrs['val'] ?? '11');
152
+ break;
153
+ case 'name':
154
+ f.name = c.attrs['val'];
155
+ break;
156
+ case 'family':
157
+ f.family = parseInt(c.attrs['val'] ?? '0', 10);
158
+ break;
159
+ case 'scheme':
160
+ f.scheme = c.attrs['val'];
161
+ break;
162
+ case 'charset':
163
+ f.charset = parseInt(c.attrs['val'] ?? '0', 10);
164
+ break;
165
+ case 'vertAlign':
166
+ f.vertAlign = c.attrs['val'];
167
+ break;
168
+ case 'color': {
169
+ const rgb = c.attrs['rgb'] ?? c.attrs['theme'];
170
+ if (rgb)
171
+ f.color = rgb;
172
+ break;
173
+ }
174
+ }
175
+ }
176
+ return f;
177
+ }
178
+ function parseFill(node) {
179
+ const pattern = child(node, 'patternFill');
180
+ if (pattern) {
181
+ const fg = child(pattern, 'fgColor');
182
+ const bg = child(pattern, 'bgColor');
183
+ return {
184
+ type: 'pattern',
185
+ pattern: (pattern.attrs['patternType'] ?? 'none'),
186
+ fgColor: fg?.attrs['rgb'] ?? fg?.attrs['theme'],
187
+ bgColor: bg?.attrs['rgb'] ?? bg?.attrs['theme'],
188
+ };
189
+ }
190
+ const gradient = child(node, 'gradientFill');
191
+ if (gradient) {
192
+ const stops = children(gradient, 'gradientStop').map(s => {
193
+ const colorNode = child(s, 'color');
194
+ return {
195
+ position: parseFloat(s.attrs['position'] ?? '0'),
196
+ color: colorNode?.attrs['rgb'] ?? colorNode?.attrs['theme'] ?? 'FF000000',
197
+ };
198
+ });
199
+ return {
200
+ type: 'gradient',
201
+ gradientType: gradient.attrs['type'],
202
+ degree: gradient.attrs['degree'] ? parseFloat(gradient.attrs['degree']) : undefined,
203
+ stops,
204
+ };
205
+ }
206
+ return { type: 'pattern', pattern: 'none' };
207
+ }
208
+ function parseBorder(node) {
209
+ const parseSide = (tag) => {
210
+ const n = child(node, tag);
211
+ if (!n)
212
+ return undefined;
213
+ const style = n.attrs['style'];
214
+ const color = child(n, 'color');
215
+ if (!style && !color)
216
+ return undefined;
217
+ return { style: style, color: color?.attrs['rgb'] };
218
+ };
219
+ return {
220
+ left: parseSide('left'),
221
+ right: parseSide('right'),
222
+ top: parseSide('top'),
223
+ bottom: parseSide('bottom'),
224
+ diagonal: parseSide('diagonal'),
225
+ diagonalUp: node.attrs['diagonalUp'] === '1',
226
+ diagonalDown: node.attrs['diagonalDown'] === '1',
227
+ };
228
+ }
229
+ function parseAlignment(node) {
230
+ const a = {};
231
+ if (node.attrs['horizontal'])
232
+ a.horizontal = node.attrs['horizontal'];
233
+ if (node.attrs['vertical'])
234
+ a.vertical = node.attrs['vertical'];
235
+ if (node.attrs['wrapText'])
236
+ a.wrapText = node.attrs['wrapText'] !== '0';
237
+ if (node.attrs['shrinkToFit'])
238
+ a.shrinkToFit = node.attrs['shrinkToFit'] !== '0';
239
+ if (node.attrs['textRotation'])
240
+ a.textRotation = parseInt(node.attrs['textRotation'], 10);
241
+ if (node.attrs['indent'])
242
+ a.indent = parseInt(node.attrs['indent'], 10);
243
+ if (node.attrs['readingOrder'])
244
+ a.readingOrder = parseInt(node.attrs['readingOrder'], 10);
245
+ return a;
246
+ }
247
+ function parseSharedStrings(xml) {
248
+ const root = parseXml(xml);
249
+ return children(root, 'si').map(si => {
250
+ const t = child(si, 't');
251
+ if (t && !child(si, 'r'))
252
+ return t.text ?? '';
253
+ return children(si, 'r').map(r => child(r, 't')?.text ?? '').join('');
254
+ });
255
+ }
256
+ function parseWorksheet(xml, name, styles, sharedStrings) {
257
+ const ws = new Worksheet(name);
258
+ const root = parseXml(xml);
259
+ const unknownParts = [];
260
+ const knownTags = new Set([
261
+ 'sheetPr', 'dimension', 'sheetViews', 'sheetFormatPr', 'cols',
262
+ 'sheetData', 'mergeCells', 'conditionalFormatting', 'dataValidations',
263
+ 'sheetProtection', 'printOptions', 'pageMargins', 'pageSetup',
264
+ 'headerFooter', 'drawing', 'tableParts', 'autoFilter',
265
+ 'rowBreaks', 'colBreaks', 'picture', 'oleObjects', 'ctrlProps',
266
+ ]);
267
+ for (const node of root.children) {
268
+ const tag = localName(node.tag);
269
+ switch (tag) {
270
+ case 'sheetViews':
271
+ parseSheetViews(node, ws);
272
+ break;
273
+ case 'cols':
274
+ parseCols(node, ws, styles);
275
+ break;
276
+ case 'sheetData':
277
+ parseSheetData(node, ws, styles, sharedStrings);
278
+ break;
279
+ case 'mergeCells':
280
+ parseMerges(node, ws);
281
+ break;
282
+ case 'autoFilter':
283
+ ws.autoFilter = { ref: node.attrs['ref'] ?? '' };
284
+ break;
285
+ case 'sheetProtection':
286
+ parseProtection(node, ws);
287
+ break;
288
+ case 'pageMargins':
289
+ parsePageMargins(node, ws);
290
+ break;
291
+ case 'pageSetup':
292
+ parsePageSetup(node, ws);
293
+ break;
294
+ case 'headerFooter':
295
+ parseHeaderFooter(node, ws);
296
+ break;
297
+ case 'printOptions':
298
+ parsePrintOptions(node, ws);
299
+ break;
300
+ default:
301
+ if (!knownTags.has(tag)) {
302
+ unknownParts.push(nodeToXml(node));
303
+ }
304
+ break;
305
+ }
306
+ }
307
+ return { ws, originalXml: xml, unknownParts };
308
+ }
309
+ function parseSheetViews(node, ws) {
310
+ const sv = children(node, 'sheetView')[0];
311
+ if (!sv)
312
+ return;
313
+ ws.view = {
314
+ showGridLines: sv.attrs['showGridLines'] !== '0',
315
+ showRowColHeaders: sv.attrs['showRowColHeaders'] !== '0',
316
+ zoomScale: sv.attrs['zoomScale'] ? parseInt(sv.attrs['zoomScale'], 10) : undefined,
317
+ rightToLeft: sv.attrs['rightToLeft'] === '1',
318
+ tabSelected: sv.attrs['tabSelected'] === '1',
319
+ view: sv.attrs['view'],
320
+ };
321
+ const pane = child(sv, 'pane');
322
+ if (pane && pane.attrs['state'] === 'frozen') {
323
+ ws.freezePane = {
324
+ col: pane.attrs['xSplit'] ? parseInt(pane.attrs['xSplit'], 10) : undefined,
325
+ row: pane.attrs['ySplit'] ? parseInt(pane.attrs['ySplit'], 10) : undefined,
326
+ };
327
+ }
328
+ }
329
+ function parseCols(node, ws, styles) {
330
+ for (const col of children(node, 'col')) {
331
+ const min = parseInt(col.attrs['min'] ?? '1', 10);
332
+ const max = parseInt(col.attrs['max'] ?? '1', 10);
333
+ const def = {
334
+ width: col.attrs['width'] ? parseFloat(col.attrs['width']) : undefined,
335
+ hidden: col.attrs['hidden'] === '1',
336
+ customWidth: col.attrs['customWidth'] === '1',
337
+ outlineLevel: col.attrs['outlineLevel'] ? parseInt(col.attrs['outlineLevel'], 10) : undefined,
338
+ style: col.attrs['style'] ? styles.xfs[parseInt(col.attrs['style'], 10)] : undefined,
339
+ };
340
+ for (let c = min; c <= max; c++)
341
+ ws.setColumn(c, def);
342
+ }
343
+ }
344
+ function parseSheetData(node, ws, styles, sharedStrings) {
345
+ for (const rowNode of children(node, 'row')) {
346
+ const rowIdx = parseInt(rowNode.attrs['r'] ?? '0', 10);
347
+ if (!rowIdx)
348
+ continue;
349
+ const rowDef = {};
350
+ if (rowNode.attrs['ht'])
351
+ rowDef.height = parseFloat(rowNode.attrs['ht']);
352
+ if (rowNode.attrs['hidden'])
353
+ rowDef.hidden = rowNode.attrs['hidden'] === '1';
354
+ if (rowNode.attrs['outlineLevel'])
355
+ rowDef.outlineLevel = parseInt(rowNode.attrs['outlineLevel'], 10);
356
+ if (rowNode.attrs['collapsed'])
357
+ rowDef.collapsed = rowNode.attrs['collapsed'] === '1';
358
+ if (rowNode.attrs['s'])
359
+ rowDef.style = styles.xfs[parseInt(rowNode.attrs['s'], 10)];
360
+ if (Object.keys(rowDef).length)
361
+ ws.setRow(rowIdx, rowDef);
362
+ for (const cNode of children(rowNode, 'c')) {
363
+ const ref = cNode.attrs['r'] ?? '';
364
+ if (!ref)
365
+ continue;
366
+ const { row, col } = cellRefToIndices(ref);
367
+ const styleIdx = cNode.attrs['s'] ? parseInt(cNode.attrs['s'], 10) : 0;
368
+ const cellStyle = styleIdx > 0 ? styles.xfs[styleIdx] : undefined;
369
+ const t = cNode.attrs['t'] ?? '';
370
+ const fNode = child(cNode, 'f');
371
+ const vNode = child(cNode, 'v');
372
+ const cell = {};
373
+ if (cellStyle)
374
+ cell.style = cellStyle;
375
+ if (fNode) {
376
+ if (fNode.attrs['t'] === 'array') {
377
+ cell.arrayFormula = fNode.text ?? '';
378
+ }
379
+ else {
380
+ cell.formula = fNode.text ?? '';
381
+ }
382
+ }
383
+ else if (vNode) {
384
+ const raw = vNode.text ?? '';
385
+ switch (t) {
386
+ case 's': {
387
+ const idx = parseInt(raw, 10);
388
+ cell.value = sharedStrings[idx] ?? '';
389
+ break;
390
+ }
391
+ case 'b':
392
+ cell.value = raw === '1' || raw === 'true';
393
+ break;
394
+ case 'str':
395
+ case 'inlineStr': {
396
+ const is = child(cNode, 'is');
397
+ cell.value = is ? (child(is, 't')?.text ?? raw) : raw;
398
+ break;
399
+ }
400
+ case 'e':
401
+ cell.value = raw;
402
+ break;
403
+ default: {
404
+ const n = parseFloat(raw);
405
+ cell.value = isNaN(n) ? raw : n;
406
+ break;
407
+ }
408
+ }
409
+ }
410
+ if (Object.keys(cell).length || cell.value !== undefined) {
411
+ ws.setCell(row, col, cell);
412
+ }
413
+ }
414
+ }
415
+ }
416
+ function parseMerges(node, ws) {
417
+ for (const m of children(node, 'mergeCell')) {
418
+ const ref = m.attrs['ref'] ?? '';
419
+ if (ref.includes(':'))
420
+ ws.mergeByRef(ref);
421
+ }
422
+ }
423
+ function parseProtection(node, ws) {
424
+ ws.protection = {
425
+ sheet: node.attrs['sheet'] !== '0',
426
+ password: undefined,
427
+ selectLockedCells: node.attrs['selectLockedCells'] !== '0',
428
+ selectUnlockedCells: node.attrs['selectUnlockedCells'] !== '0',
429
+ formatCells: node.attrs['formatCells'] === '0',
430
+ formatColumns: node.attrs['formatColumns'] === '0',
431
+ formatRows: node.attrs['formatRows'] === '0',
432
+ insertColumns: node.attrs['insertColumns'] === '0',
433
+ insertRows: node.attrs['insertRows'] === '0',
434
+ insertHyperlinks: node.attrs['insertHyperlinks'] === '0',
435
+ deleteColumns: node.attrs['deleteColumns'] === '0',
436
+ deleteRows: node.attrs['deleteRows'] === '0',
437
+ sort: node.attrs['sort'] === '0',
438
+ autoFilter: node.attrs['autoFilter'] === '0',
439
+ pivotTables: node.attrs['pivotTables'] === '0',
440
+ };
441
+ }
442
+ function parsePageMargins(node, ws) {
443
+ ws.pageMargins = {
444
+ left: parseFloat(node.attrs['left'] ?? '0.7'),
445
+ right: parseFloat(node.attrs['right'] ?? '0.7'),
446
+ top: parseFloat(node.attrs['top'] ?? '0.75'),
447
+ bottom: parseFloat(node.attrs['bottom'] ?? '0.75'),
448
+ header: parseFloat(node.attrs['header'] ?? '0.3'),
449
+ footer: parseFloat(node.attrs['footer'] ?? '0.3'),
450
+ };
451
+ }
452
+ function parsePageSetup(node, ws) {
453
+ ws.pageSetup = {
454
+ paperSize: node.attrs['paperSize'] ? parseInt(node.attrs['paperSize'], 10) : undefined,
455
+ orientation: node.attrs['orientation'],
456
+ fitToPage: node.attrs['fitToPage'] === '1',
457
+ fitToWidth: node.attrs['fitToWidth'] ? parseInt(node.attrs['fitToWidth'], 10) : undefined,
458
+ fitToHeight: node.attrs['fitToHeight'] ? parseInt(node.attrs['fitToHeight'], 10) : undefined,
459
+ scale: node.attrs['scale'] ? parseInt(node.attrs['scale'], 10) : undefined,
460
+ horizontalDpi: node.attrs['horizontalDpi'] ? parseInt(node.attrs['horizontalDpi'], 10) : undefined,
461
+ verticalDpi: node.attrs['verticalDpi'] ? parseInt(node.attrs['verticalDpi'], 10) : undefined,
462
+ };
463
+ }
464
+ function parseHeaderFooter(node, ws) {
465
+ ws.headerFooter = {
466
+ oddHeader: child(node, 'oddHeader')?.text,
467
+ oddFooter: child(node, 'oddFooter')?.text,
468
+ evenHeader: child(node, 'evenHeader')?.text,
469
+ evenFooter: child(node, 'evenFooter')?.text,
470
+ firstHeader: child(node, 'firstHeader')?.text,
471
+ firstFooter: child(node, 'firstFooter')?.text,
472
+ differentOddEven: node.attrs['differentOddEven'] === '1',
473
+ differentFirst: node.attrs['differentFirst'] === '1',
474
+ };
475
+ }
476
+ function parsePrintOptions(node, ws) {
477
+ ws.printOptions = {
478
+ gridLines: node.attrs['gridLines'] === '1',
479
+ gridLinesSet: node.attrs['gridLinesSet'] === '1',
480
+ headings: node.attrs['headings'] === '1',
481
+ centerHorizontal: node.attrs['horizontalCentered'] === '1',
482
+ centerVertical: node.attrs['verticalCentered'] === '1',
483
+ };
484
+ }
485
+ export async function readWorkbook(data) {
486
+ const zip = await readZip(data);
487
+ const get = (path) => {
488
+ return zip.get(path) ?? zip.get(path.replace(/^\//, ''));
489
+ };
490
+ const getText = (path) => {
491
+ const e = get(path);
492
+ return e ? entryText(e) : undefined;
493
+ };
494
+ const ctXml = getText('[Content_Types].xml') ?? '<Types/>';
495
+ const contentTypes = parseContentTypes(ctXml);
496
+ const wbRelsXml = getText('xl/_rels/workbook.xml.rels') ?? '<Relationships/>';
497
+ const workbookRels = parseRels(wbRelsXml);
498
+ const wbXml = getText('xl/workbook.xml') ?? '<workbook/>';
499
+ const stylesXml = getText('xl/styles.xml') ?? '<styleSheet/>';
500
+ const styles = parseStyles(stylesXml);
501
+ const ssXml = getText('xl/sharedStrings.xml') ?? '<sst/>';
502
+ const sharedStrings = ssXml !== '<sst/>' ? parseSharedStrings(ssXml) : [];
503
+ const coreXml = getText('docProps/core.xml') ?? '';
504
+ const core = coreXml ? parseCoreXml(coreXml) : {};
505
+ const appXml = getText('docProps/app.xml') ?? '';
506
+ let extended = {};
507
+ let extendedUnknownRaw = '';
508
+ if (appXml) {
509
+ const r = parseAppXml(appXml);
510
+ extended = r.props;
511
+ extendedUnknownRaw = r.unknownRaw;
512
+ }
513
+ const customXml = getText('docProps/custom.xml') ?? '';
514
+ const custom = customXml ? parseCustomXml(customXml) : [];
515
+ const wbRoot = parseXml(wbXml);
516
+ const sheetsNode = find(wbRoot, 'sheets');
517
+ const sheetNodes = sheetsNode ? children(sheetsNode, 'sheet') : [];
518
+ const allRels = new Map();
519
+ for (const [path, entry] of zip) {
520
+ if (path.includes('_rels/')) {
521
+ allRels.set(path, parseRels(entryText(entry)));
522
+ }
523
+ }
524
+ const sheets = [];
525
+ for (const sn of sheetNodes) {
526
+ const rId = sn.attrs['r:id'] ?? Object.values(sn.attrs).find(v => v.startsWith('rId')) ?? '';
527
+ const sheetId = sn.attrs['sheetId'] ?? '';
528
+ const name = sn.attrs['name'] ?? `Sheet${sheetId}`;
529
+ const rel = workbookRels.get(rId);
530
+ if (!rel)
531
+ continue;
532
+ const target = rel.target.startsWith('/') ? rel.target.slice(1) : `xl/${rel.target}`;
533
+ const sheetXml = getText(target) ?? '';
534
+ if (!sheetXml)
535
+ continue;
536
+ const { ws, originalXml, unknownParts: sheetUnknown } = parseWorksheet(sheetXml, name, styles, sharedStrings);
537
+ ws.sheetIndex = sheets.length + 1;
538
+ ws.rId = rId;
539
+ sheets.push({ ws, sheetId, rId, originalXml, unknownParts: sheetUnknown });
540
+ }
541
+ const handledPrefixes = new Set([
542
+ 'xl/workbook.xml', 'xl/styles.xml', 'xl/sharedStrings.xml',
543
+ 'xl/worksheets/', 'docProps/', '[Content_Types].xml',
544
+ '_rels/', 'xl/_rels/',
545
+ ]);
546
+ const unknownParts = new Map();
547
+ for (const [path, entry] of zip) {
548
+ if (path.endsWith('_rels/') || path === '[Content_Types].xml')
549
+ continue;
550
+ const isHandled = [...handledPrefixes].some(p => path.startsWith(p));
551
+ if (!isHandled) {
552
+ unknownParts.set(path, entry.data);
553
+ }
554
+ }
555
+ return {
556
+ sheets, styles, stylesXml, sharedStrings, sharedXml: ssXml,
557
+ workbookXml: wbXml, workbookRels,
558
+ contentTypes, contentTypesXml: ctXml,
559
+ core, extended, extendedUnknownRaw, custom, hasCustomProps: custom.length > 0,
560
+ unknownParts, allRels,
561
+ };
562
+ }
563
+ //# sourceMappingURL=WorkbookReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkbookReader.js","sourceRoot":"","sources":["../../src/core/WorkbookReader.ts"],"names":[],"mappings":"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"}