typesexcel 1.0.1

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.
@@ -0,0 +1,344 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ import { readFileSync } from 'node:fs';
13
+ import { dirname, join, posix } from 'node:path';
14
+ import { fileURLToPath } from 'node:url';
15
+ import { DOMBuilder, SAXParser } from 'typesxml';
16
+ import { I18n } from './i18n.js';
17
+ import { ColumnUtils } from './columnUtils.js';
18
+ import { ExcelSheet } from './excelSheet.js';
19
+ import { ExcelWorkbook } from './excelWorkbook.js';
20
+ import { ZipUtils } from './zipUtils.js';
21
+ export class ExcelReader {
22
+ i18n;
23
+ columnUtils;
24
+ zipUtils;
25
+ constructor(language) {
26
+ this.i18n = new I18n(this.resolveMessagesPath(language));
27
+ this.columnUtils = new ColumnUtils();
28
+ this.zipUtils = new ZipUtils();
29
+ }
30
+ resolveMessagesPath(language) {
31
+ return join(dirname(fileURLToPath(import.meta.url)), 'excel_' + language + '.json');
32
+ }
33
+ readSheets(filePath) {
34
+ let { entries, workbookDir, workbookRelationships, relsById, sheetsElement } = this.loadWorkbookContext(filePath);
35
+ let sharedStrings = this.loadSharedStrings(entries, workbookDir, workbookRelationships);
36
+ let dateStyleIndices = this.parseDateStyleIndices(entries);
37
+ let sheets = [];
38
+ for (let sheetElement of sheetsElement.getChildren().filter((child) => child.getName() === 'sheet')) {
39
+ let state = sheetElement.getAttribute('state')?.getValue();
40
+ if (state === 'hidden' || state === 'veryHidden') {
41
+ continue;
42
+ }
43
+ let rId = sheetElement.getAttribute('r:id')?.getValue();
44
+ let target = rId ? relsById.get(rId) : undefined;
45
+ if (!target) {
46
+ continue;
47
+ }
48
+ let name = sheetElement.getAttribute('name')?.getValue() || '';
49
+ let sheetPath = this.resolveZipPath(workbookDir, target);
50
+ let sheetRoot = this.parseXml(this.requireEntry(entries, sheetPath));
51
+ sheets.push({ name, rows: this.parseSheetRows(sheetRoot, sharedStrings, dateStyleIndices) });
52
+ }
53
+ if (sheets.length === 0) {
54
+ throw new Error(this.i18n.getString('ExcelReader', 'noSheets'));
55
+ }
56
+ return sheets;
57
+ }
58
+ listSheets(filePath) {
59
+ let { sheetsElement } = this.loadWorkbookContext(filePath);
60
+ let names = [];
61
+ for (let sheetElement of sheetsElement.getChildren().filter((child) => child.getName() === 'sheet')) {
62
+ let state = sheetElement.getAttribute('state')?.getValue();
63
+ if (state === 'hidden' || state === 'veryHidden') {
64
+ continue;
65
+ }
66
+ let name = sheetElement.getAttribute('name')?.getValue() || '';
67
+ names.push(name);
68
+ }
69
+ return names;
70
+ }
71
+ readSheet(filePath, sheetName) {
72
+ let { entries, workbookDir, workbookRelationships, relsById, sheetsElement } = this.loadWorkbookContext(filePath);
73
+ for (let sheetElement of sheetsElement.getChildren().filter((child) => child.getName() === 'sheet')) {
74
+ let state = sheetElement.getAttribute('state')?.getValue();
75
+ if (state === 'hidden' || state === 'veryHidden') {
76
+ continue;
77
+ }
78
+ let name = sheetElement.getAttribute('name')?.getValue() || '';
79
+ if (name !== sheetName) {
80
+ continue;
81
+ }
82
+ let rId = sheetElement.getAttribute('r:id')?.getValue();
83
+ let target = rId ? relsById.get(rId) : undefined;
84
+ if (!target) {
85
+ continue;
86
+ }
87
+ let sharedStrings = this.loadSharedStrings(entries, workbookDir, workbookRelationships);
88
+ let dateStyleIndices = this.parseDateStyleIndices(entries);
89
+ let sheetPath = this.resolveZipPath(workbookDir, target);
90
+ let sheetRoot = this.parseXml(this.requireEntry(entries, sheetPath));
91
+ return { name, rows: this.parseSheetRows(sheetRoot, sharedStrings, dateStyleIndices) };
92
+ }
93
+ throw new Error(this.i18n.format(this.i18n.getString('ExcelReader', 'sheetNotFound'), [sheetName]));
94
+ }
95
+ readWorkbook(filePath) {
96
+ let { entries, workbookDir, workbookRelationships, relsById, sheetsElement } = this.loadWorkbookContext(filePath);
97
+ let sharedStrings = this.loadSharedStrings(entries, workbookDir, workbookRelationships);
98
+ let dateStyleIndices = this.parseDateStyleIndices(entries);
99
+ let sheets = [];
100
+ for (let sheetElement of sheetsElement.getChildren().filter((child) => child.getName() === 'sheet')) {
101
+ let state = sheetElement.getAttribute('state')?.getValue();
102
+ if (state === 'hidden' || state === 'veryHidden') {
103
+ continue;
104
+ }
105
+ let rId = sheetElement.getAttribute('r:id')?.getValue();
106
+ let target = rId ? relsById.get(rId) : undefined;
107
+ if (!target) {
108
+ continue;
109
+ }
110
+ let name = sheetElement.getAttribute('name')?.getValue() || '';
111
+ let sheetPath = this.resolveZipPath(workbookDir, target);
112
+ let sheetRoot = this.parseXml(this.requireEntry(entries, sheetPath));
113
+ let rows = this.parseSheetRows(sheetRoot, sharedStrings, dateStyleIndices);
114
+ let headers = rows.length > 0 ? rows[0].map((v) => v !== null ? String(v) : '') : [];
115
+ let dataRows = rows.slice(1);
116
+ sheets.push(new ExcelSheet(name, headers, dataRows));
117
+ }
118
+ return new ExcelWorkbook(sheets);
119
+ }
120
+ loadWorkbookContext(filePath) {
121
+ let entries;
122
+ try {
123
+ entries = this.zipUtils.readZip(readFileSync(filePath));
124
+ }
125
+ catch (error) {
126
+ throw new Error(this.i18n.format(this.i18n.getString('ExcelReader', 'notAWorkbook'), [error instanceof Error ? error.message : String(error)]));
127
+ }
128
+ let rootRelationships = this.parseRelationships(entries, '_rels/.rels');
129
+ let officeDocument = rootRelationships.find((relationship) => relationship.type.endsWith('/officeDocument'));
130
+ if (!officeDocument) {
131
+ throw new Error(this.i18n.format(this.i18n.getString('ExcelReader', 'missingWorkbookPart'), ['_rels/.rels']));
132
+ }
133
+ let workbookPath = this.resolveZipPath('', officeDocument.target);
134
+ let workbookDir = posix.dirname(workbookPath);
135
+ let workbookRelsPath = posix.join(workbookDir, '_rels', posix.basename(workbookPath) + '.rels');
136
+ let workbookRelationships = this.parseRelationships(entries, workbookRelsPath);
137
+ let relsById = new Map();
138
+ for (let relationship of workbookRelationships) {
139
+ relsById.set(relationship.id, relationship.target);
140
+ }
141
+ let workbookRoot = this.parseXml(this.requireEntry(entries, workbookPath));
142
+ let sheetsElement = workbookRoot.getChild('sheets');
143
+ if (!sheetsElement) {
144
+ throw new Error(this.i18n.getString('ExcelReader', 'noSheets'));
145
+ }
146
+ return { entries, workbookDir, workbookRelationships, relsById, sheetsElement };
147
+ }
148
+ loadSharedStrings(entries, workbookDir, workbookRelationships) {
149
+ let sharedStrings = [];
150
+ let sharedStringsRelationship = workbookRelationships.find((relationship) => relationship.type.endsWith('/sharedStrings'));
151
+ if (sharedStringsRelationship) {
152
+ let sharedStringsPath = this.resolveZipPath(workbookDir, sharedStringsRelationship.target);
153
+ let data = entries.get(sharedStringsPath);
154
+ if (data) {
155
+ sharedStrings = this.parseSharedStrings(this.parseXml(data));
156
+ }
157
+ }
158
+ return sharedStrings;
159
+ }
160
+ parseSheetRows(sheetRoot, sharedStrings, dateStyleIndices) {
161
+ let sheetDataElement = sheetRoot.getChild('sheetData');
162
+ if (!sheetDataElement) {
163
+ return [];
164
+ }
165
+ let rawRows = [];
166
+ let maxColumn = -1;
167
+ for (let rowElement of sheetDataElement.getChildren().filter((child) => child.getName() === 'row')) {
168
+ let rowValues = new Map();
169
+ for (let cellElement of rowElement.getChildren().filter((child) => child.getName() === 'c')) {
170
+ let reference = cellElement.getAttribute('r')?.getValue();
171
+ let match = reference ? reference.match(/^[A-Z]+/) : null;
172
+ if (!match) {
173
+ continue;
174
+ }
175
+ let value = this.cellValue(cellElement, sharedStrings, dateStyleIndices);
176
+ if (value === null) {
177
+ continue;
178
+ }
179
+ let index = this.columnUtils.columnIndex(match[0]);
180
+ rowValues.set(index, value);
181
+ if (index > maxColumn) {
182
+ maxColumn = index;
183
+ }
184
+ }
185
+ rawRows.push(rowValues);
186
+ }
187
+ let rows = [];
188
+ for (let rowValues of rawRows) {
189
+ let row = [];
190
+ for (let c = 0; c <= maxColumn; c++) {
191
+ row.push(rowValues.get(c) ?? null);
192
+ }
193
+ rows.push(row);
194
+ }
195
+ return rows;
196
+ }
197
+ cellValue(cellElement, sharedStrings, dateStyleIndices) {
198
+ let type = cellElement.getAttribute('t')?.getValue() || '';
199
+ if (type === 's') {
200
+ let v = cellElement.getChild('v');
201
+ if (!v) {
202
+ return null;
203
+ }
204
+ return sharedStrings[parseInt(v.getText(), 10)] ?? null;
205
+ }
206
+ if (type === 'inlineStr') {
207
+ let is = cellElement.getChild('is');
208
+ return is ? this.fullText(is) : null;
209
+ }
210
+ if (type === 'b') {
211
+ let v = cellElement.getChild('v');
212
+ return v ? v.getText() !== '0' : null;
213
+ }
214
+ if (type === 'e') {
215
+ let v = cellElement.getChild('v');
216
+ return v ? v.getText() : null;
217
+ }
218
+ let v = cellElement.getChild('v');
219
+ if (!v) {
220
+ return null;
221
+ }
222
+ let n = parseFloat(v.getText());
223
+ if (isNaN(n)) {
224
+ return null;
225
+ }
226
+ let styleIndex = parseInt(cellElement.getAttribute('s')?.getValue() || '0', 10);
227
+ if (dateStyleIndices.has(styleIndex)) {
228
+ return this.serialToDate(n);
229
+ }
230
+ return n;
231
+ }
232
+ serialToDate(serial) {
233
+ return new Date(serial * 86400000 + Date.UTC(1899, 11, 30));
234
+ }
235
+ parseDateStyleIndices(entries) {
236
+ let builtinDateFmtIds = new Set([14, 15, 16, 17, 18, 19, 20, 21, 22, 45, 46, 47]);
237
+ let dateFmtIds = new Set(builtinDateFmtIds);
238
+ let dateStyleIndices = new Set();
239
+ let data = entries.get('xl/styles.xml');
240
+ if (!data) {
241
+ return dateStyleIndices;
242
+ }
243
+ let root = this.parseXml(data);
244
+ let numFmtsElement = root.getChild('numFmts');
245
+ if (numFmtsElement) {
246
+ for (let numFmt of numFmtsElement.getChildren().filter((child) => child.getName() === 'numFmt')) {
247
+ let id = parseInt(numFmt.getAttribute('numFmtId')?.getValue() || '0', 10);
248
+ let code = numFmt.getAttribute('formatCode')?.getValue() || '';
249
+ if (/[ydhm]/i.test(code) && !/^[0#,\.\s"]+$/.test(code)) {
250
+ dateFmtIds.add(id);
251
+ }
252
+ }
253
+ }
254
+ let cellXfsElement = root.getChild('cellXfs');
255
+ if (cellXfsElement) {
256
+ let index = 0;
257
+ for (let xf of cellXfsElement.getChildren().filter((child) => child.getName() === 'xf')) {
258
+ let numFmtId = parseInt(xf.getAttribute('numFmtId')?.getValue() || '0', 10);
259
+ if (dateFmtIds.has(numFmtId)) {
260
+ dateStyleIndices.add(index);
261
+ }
262
+ index++;
263
+ }
264
+ }
265
+ return dateStyleIndices;
266
+ }
267
+ parseSharedStrings(root) {
268
+ let strings = [];
269
+ for (let si of root.getChildren().filter((child) => child.getName() === 'si')) {
270
+ strings.push(this.fullText(si));
271
+ }
272
+ return strings;
273
+ }
274
+ parseRelationships(entries, relsPath) {
275
+ let data = entries.get(relsPath);
276
+ if (!data) {
277
+ return [];
278
+ }
279
+ let root = this.parseXml(data);
280
+ let relationships = [];
281
+ for (let element of root.getChildren().filter((child) => child.getName() === 'Relationship')) {
282
+ relationships.push({
283
+ id: element.getAttribute('Id')?.getValue() || '',
284
+ type: element.getAttribute('Type')?.getValue() || '',
285
+ target: element.getAttribute('Target')?.getValue() || ''
286
+ });
287
+ }
288
+ return relationships;
289
+ }
290
+ requireEntry(entries, path) {
291
+ let data = entries.get(path);
292
+ if (!data) {
293
+ throw new Error(this.i18n.format(this.i18n.getString('ExcelReader', 'missingWorkbookPart'), [path]));
294
+ }
295
+ return data;
296
+ }
297
+ parseXml(data) {
298
+ let contentHandler = new DOMBuilder();
299
+ let parser = new SAXParser();
300
+ parser.setSchemaLoadingEnabled(false);
301
+ parser.setValidating(false);
302
+ parser.setContentHandler(contentHandler);
303
+ parser.parseString(data.toString('utf8'));
304
+ let root = contentHandler.getDocument()?.getRoot();
305
+ if (!root) {
306
+ throw new Error(this.i18n.getString('ExcelReader', 'unparsableXmlPart'));
307
+ }
308
+ return root;
309
+ }
310
+ fullText(container) {
311
+ let text = '';
312
+ for (let child of container.getChildren()) {
313
+ let name = child.getName();
314
+ if (name === 'rPh' || name === 'phoneticPr') {
315
+ continue; // skip phonetic (ruby) annotations
316
+ }
317
+ text += this.firstText(child);
318
+ }
319
+ return text;
320
+ }
321
+ firstText(element) {
322
+ if (element.getName() === 't') {
323
+ return element.getText();
324
+ }
325
+ for (let child of element.getChildren()) {
326
+ let name = child.getName();
327
+ if (name === 'rPh' || name === 'phoneticPr') {
328
+ continue; // skip phonetic (ruby) annotations
329
+ }
330
+ let text = this.firstText(child);
331
+ if (text) {
332
+ return text;
333
+ }
334
+ }
335
+ return '';
336
+ }
337
+ resolveZipPath(baseDir, target) {
338
+ if (target.startsWith('/')) {
339
+ return posix.normalize(target.slice(1));
340
+ }
341
+ return posix.normalize(posix.join(baseDir, target));
342
+ }
343
+ }
344
+ //# sourceMappingURL=excelReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excelReader.js","sourceRoot":"","sources":["../ts/excelReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ import { CellValue } from './cellValue.js';
13
+ export declare class ExcelSheet {
14
+ private name;
15
+ private headers;
16
+ private rows;
17
+ constructor(name: string, headers: string[], rows: CellValue[][]);
18
+ getName(): string;
19
+ getHeaders(): string[];
20
+ getRows(): CellValue[][];
21
+ }
@@ -0,0 +1,31 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ export class ExcelSheet {
13
+ name;
14
+ headers;
15
+ rows;
16
+ constructor(name, headers, rows) {
17
+ this.name = name;
18
+ this.headers = headers;
19
+ this.rows = rows;
20
+ }
21
+ getName() {
22
+ return this.name;
23
+ }
24
+ getHeaders() {
25
+ return this.headers;
26
+ }
27
+ getRows() {
28
+ return this.rows;
29
+ }
30
+ }
31
+ //# sourceMappingURL=excelSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excelSheet.js","sourceRoot":"","sources":["../ts/excelSheet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAIjF,MAAM,OAAO,UAAU;IACX,IAAI,CAAS;IACb,OAAO,CAAW;IAClB,IAAI,CAAgB;IAE5B,YAAY,IAAY,EAAE,OAAiB,EAAE,IAAmB;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ"}
@@ -0,0 +1,20 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ import { ExcelSheet } from './excelSheet.js';
13
+ export declare class ExcelWorkbook {
14
+ private sheets;
15
+ constructor(sheets?: ExcelSheet[]);
16
+ addSheet(sheet: ExcelSheet): void;
17
+ removeSheet(name: string): void;
18
+ getSheet(name: string): ExcelSheet | undefined;
19
+ getSheets(): ExcelSheet[];
20
+ }
@@ -0,0 +1,30 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ export class ExcelWorkbook {
13
+ sheets;
14
+ constructor(sheets = []) {
15
+ this.sheets = sheets;
16
+ }
17
+ addSheet(sheet) {
18
+ this.sheets.push(sheet);
19
+ }
20
+ removeSheet(name) {
21
+ this.sheets = this.sheets.filter((s) => s.getName() !== name);
22
+ }
23
+ getSheet(name) {
24
+ return this.sheets.find((s) => s.getName() === name);
25
+ }
26
+ getSheets() {
27
+ return [...this.sheets];
28
+ }
29
+ }
30
+ //# sourceMappingURL=excelWorkbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excelWorkbook.js","sourceRoot":"","sources":["../ts/excelWorkbook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAIjF,MAAM,OAAO,aAAa;IACd,MAAM,CAAe;IAE7B,YAAY,SAAuB,EAAE;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,KAAiB;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,SAAS;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,29 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ import { ExcelSheet } from './excelSheet.js';
13
+ import { ExcelWorkbook } from './excelWorkbook.js';
14
+ export declare class ExcelWriter {
15
+ private i18n;
16
+ private columnUtils;
17
+ private zipUtils;
18
+ constructor(language: string);
19
+ private resolveMessagesPath;
20
+ writeFile(filePath: string, data: ExcelSheet | ExcelWorkbook): void;
21
+ private writeMultipleSheets;
22
+ private setSheetName;
23
+ private setSheetData;
24
+ private ensureDateStyleIndex;
25
+ private dateToSerial;
26
+ private parseEntry;
27
+ private requireRoot;
28
+ private writeEntry;
29
+ }