@justybase/spreadsheet-tasks 1.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/dist/BiffReaderWriter.d.ts +44 -0
  4. package/dist/BiffReaderWriter.d.ts.map +1 -0
  5. package/dist/BiffReaderWriter.js +282 -0
  6. package/dist/BiffReaderWriter.js.map +1 -0
  7. package/dist/BigBuffer.d.ts +24 -0
  8. package/dist/BigBuffer.d.ts.map +1 -0
  9. package/dist/BigBuffer.js +120 -0
  10. package/dist/BigBuffer.js.map +1 -0
  11. package/dist/ExcelReaderAbstract.d.ts +17 -0
  12. package/dist/ExcelReaderAbstract.d.ts.map +1 -0
  13. package/dist/ExcelReaderAbstract.js +25 -0
  14. package/dist/ExcelReaderAbstract.js.map +1 -0
  15. package/dist/ReaderFactory.d.ts +6 -0
  16. package/dist/ReaderFactory.d.ts.map +1 -0
  17. package/dist/ReaderFactory.js +56 -0
  18. package/dist/ReaderFactory.js.map +1 -0
  19. package/dist/XlsbReader.d.ts +24 -0
  20. package/dist/XlsbReader.d.ts.map +1 -0
  21. package/dist/XlsbReader.js +186 -0
  22. package/dist/XlsbReader.js.map +1 -0
  23. package/dist/XlsbWriter.d.ts +69 -0
  24. package/dist/XlsbWriter.d.ts.map +1 -0
  25. package/dist/XlsbWriter.js +802 -0
  26. package/dist/XlsbWriter.js.map +1 -0
  27. package/dist/XlsxReader.d.ts +30 -0
  28. package/dist/XlsxReader.d.ts.map +1 -0
  29. package/dist/XlsxReader.js +341 -0
  30. package/dist/XlsxReader.js.map +1 -0
  31. package/dist/XlsxWriter.d.ts +31 -0
  32. package/dist/XlsxWriter.d.ts.map +1 -0
  33. package/dist/XlsxWriter.js +415 -0
  34. package/dist/XlsxWriter.js.map +1 -0
  35. package/dist/index.d.ts +9 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +23 -0
  38. package/dist/index.js.map +1 -0
  39. package/docs/API.md +271 -0
  40. package/docs/BENCHMARK.md +129 -0
  41. package/docs/PUBLISHING.md +89 -0
  42. package/examples/basic-read.ts +109 -0
  43. package/examples/basic-write.ts +84 -0
  44. package/examples/large-dataset.ts +216 -0
  45. package/examples/multiple-sheets.ts +126 -0
  46. package/examples/streaming-example.ts +181 -0
  47. package/package.json +70 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BigBuffer = void 0;
4
+ const buffer_1 = require("buffer");
5
+ class BigBuffer {
6
+ constructor(chunkSize = 65536) {
7
+ this.chunkSize = chunkSize;
8
+ this.chunks = [];
9
+ this.currentBuffer = buffer_1.Buffer.alloc(chunkSize);
10
+ this.cursor = 0;
11
+ }
12
+ ensureCapacity(size) {
13
+ if (this.cursor + size > this.chunkSize) {
14
+ this._flush();
15
+ }
16
+ }
17
+ _ensureCapacity(size) {
18
+ this.ensureCapacity(size);
19
+ }
20
+ _flush() {
21
+ if (this.cursor > 0) {
22
+ this.chunks.push(this.currentBuffer.subarray(0, this.cursor));
23
+ this.currentBuffer = buffer_1.Buffer.alloc(this.chunkSize);
24
+ this.cursor = 0;
25
+ }
26
+ }
27
+ write(buffer) {
28
+ let len = buffer.length;
29
+ let offset = 0;
30
+ while (len > 0) {
31
+ let available = this.chunkSize - this.cursor;
32
+ if (available === 0) {
33
+ this._flush();
34
+ available = this.chunkSize;
35
+ }
36
+ const toWrite = Math.min(len, available);
37
+ buffer.copy(this.currentBuffer, this.cursor, offset, offset + toWrite);
38
+ this.cursor += toWrite;
39
+ offset += toWrite;
40
+ len -= toWrite;
41
+ }
42
+ }
43
+ writeByte(val) {
44
+ this._ensureCapacity(1);
45
+ this.currentBuffer[this.cursor] = val;
46
+ this.cursor++;
47
+ }
48
+ writeUnsafeByte(val) {
49
+ this.currentBuffer[this.cursor++] = val;
50
+ }
51
+ writeInt32LE(val) {
52
+ this._ensureCapacity(4);
53
+ this.currentBuffer.writeInt32LE(val, this.cursor);
54
+ this.cursor += 4;
55
+ }
56
+ writeUnsafeInt32LE(val) {
57
+ this.currentBuffer.writeInt32LE(val, this.cursor);
58
+ this.cursor += 4;
59
+ }
60
+ writeDoubleLE(val) {
61
+ this._ensureCapacity(8);
62
+ this.currentBuffer.writeDoubleLE(val, this.cursor);
63
+ this.cursor += 8;
64
+ }
65
+ writeUnsafeDoubleLE(val) {
66
+ this.currentBuffer.writeDoubleLE(val, this.cursor);
67
+ this.cursor += 8;
68
+ }
69
+ writeString(str) {
70
+ const byteLength = buffer_1.Buffer.byteLength(str, 'utf8');
71
+ if (this.cursor + byteLength <= this.chunkSize) {
72
+ this.cursor += this.currentBuffer.write(str, this.cursor, 'utf8');
73
+ return;
74
+ }
75
+ this._flush();
76
+ if (byteLength > this.chunkSize) {
77
+ this.chunks.push(buffer_1.Buffer.from(str, 'utf8'));
78
+ }
79
+ else {
80
+ this.cursor += this.currentBuffer.write(str, this.cursor, 'utf8');
81
+ }
82
+ }
83
+ writeUtf16LE(str) {
84
+ const byteLength = str.length * 2;
85
+ if (this.cursor + byteLength <= this.chunkSize) {
86
+ for (let i = 0; i < str.length; i++) {
87
+ const code = str.charCodeAt(i);
88
+ this.currentBuffer[this.cursor++] = code & 0xFF;
89
+ this.currentBuffer[this.cursor++] = (code >> 8) & 0xFF;
90
+ }
91
+ return;
92
+ }
93
+ this._flush();
94
+ if (byteLength > this.chunkSize) {
95
+ this.chunks.push(buffer_1.Buffer.from(str, 'utf16le'));
96
+ }
97
+ else {
98
+ for (let i = 0; i < str.length; i++) {
99
+ const code = str.charCodeAt(i);
100
+ this.currentBuffer[this.cursor++] = code & 0xFF;
101
+ this.currentBuffer[this.cursor++] = (code >> 8) & 0xFF;
102
+ }
103
+ }
104
+ }
105
+ getChunks() {
106
+ if (this.cursor > 0) {
107
+ this.chunks.push(this.currentBuffer.subarray(0, this.cursor));
108
+ this.currentBuffer = buffer_1.Buffer.alloc(this.chunkSize);
109
+ this.cursor = 0;
110
+ }
111
+ return this.chunks;
112
+ }
113
+ reset() {
114
+ this.chunks = [];
115
+ this.cursor = 0;
116
+ }
117
+ }
118
+ exports.BigBuffer = BigBuffer;
119
+ exports.default = BigBuffer;
120
+ //# sourceMappingURL=BigBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigBuffer.js","sourceRoot":"","sources":["../src/BigBuffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare abstract class ExcelReaderAbstract {
2
+ fieldCount: number;
3
+ rowCount: number;
4
+ actualSheetName: string;
5
+ resultsCount: number;
6
+ protected _oaEpoch: number;
7
+ constructor();
8
+ abstract open(path: string, readSharedStrings?: boolean, updateMode?: boolean): Promise<void>;
9
+ close(): Promise<void>;
10
+ abstract read(): boolean | Promise<boolean>;
11
+ abstract getSheetNames(): string[];
12
+ abstract getValue(i: number): any;
13
+ dispose(): void;
14
+ getDateTimeFromOaDate(oaDate: number): Date;
15
+ }
16
+ export default ExcelReaderAbstract;
17
+ //# sourceMappingURL=ExcelReaderAbstract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelReaderAbstract.d.ts","sourceRoot":"","sources":["../src/ExcelReaderAbstract.ts"],"names":[],"mappings":"AAAA,8BAAsB,mBAAmB;IACrC,UAAU,EAAE,MAAM,CAAK;IACvB,QAAQ,EAAE,MAAM,CAAK;IACrB,eAAe,EAAE,MAAM,CAAM;IAC7B,YAAY,EAAE,MAAM,CAAK;IAEzB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;;IAM3B,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,CAAC,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAE3C,QAAQ,CAAC,aAAa,IAAI,MAAM,EAAE;IAElC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG;IAEjC,OAAO,IAAI,IAAI;IAIf,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAI9C;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExcelReaderAbstract = void 0;
4
+ class ExcelReaderAbstract {
5
+ constructor() {
6
+ this.fieldCount = 0;
7
+ this.rowCount = 0;
8
+ this.actualSheetName = '';
9
+ this.resultsCount = 0;
10
+ this._oaEpoch = Date.UTC(1899, 11, 30);
11
+ }
12
+ async close() {
13
+ // cleanup if needed
14
+ }
15
+ dispose() {
16
+ // cleanup
17
+ }
18
+ getDateTimeFromOaDate(oaDate) {
19
+ const ms = oaDate * 86400000 + this._oaEpoch;
20
+ return new Date(ms);
21
+ }
22
+ }
23
+ exports.ExcelReaderAbstract = ExcelReaderAbstract;
24
+ exports.default = ExcelReaderAbstract;
25
+ //# sourceMappingURL=ExcelReaderAbstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelReaderAbstract.js","sourceRoot":"","sources":["../src/ExcelReaderAbstract.ts"],"names":[],"mappings":";;;AAAA,MAAsB,mBAAmB;IAQrC;QAPA,eAAU,GAAW,CAAC,CAAC;QACvB,aAAQ,GAAW,CAAC,CAAC;QACrB,oBAAe,GAAW,EAAE,CAAC;QAC7B,iBAAY,GAAW,CAAC,CAAC;QAKrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAID,KAAK,CAAC,KAAK;QACP,oBAAoB;IACxB,CAAC;IAQD,OAAO;QACH,UAAU;IACd,CAAC;IAED,qBAAqB,CAAC,MAAc;QAChC,MAAM,EAAE,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;CACJ;AAhCD,kDAgCC;AAED,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ExcelReaderAbstract } from './ExcelReaderAbstract';
2
+ export declare class ReaderFactory {
3
+ static create(filePath: string): ExcelReaderAbstract;
4
+ }
5
+ export default ReaderFactory;
6
+ //# sourceMappingURL=ReaderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReaderFactory.d.ts","sourceRoot":"","sources":["../src/ReaderFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,aAAa;IACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;CAUvD;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ReaderFactory = void 0;
37
+ const path = __importStar(require("path"));
38
+ const XlsxReader_1 = require("./XlsxReader");
39
+ const XlsbReader_1 = require("./XlsbReader");
40
+ class ReaderFactory {
41
+ static create(filePath) {
42
+ const ext = path.extname(filePath).toLowerCase();
43
+ if (ext === '.xlsx') {
44
+ return new XlsxReader_1.XlsxReader();
45
+ }
46
+ else if (ext === '.xlsb') {
47
+ return new XlsbReader_1.XlsbReader();
48
+ }
49
+ else {
50
+ throw new Error(`Unsupported extension: ${ext}`);
51
+ }
52
+ }
53
+ }
54
+ exports.ReaderFactory = ReaderFactory;
55
+ exports.default = ReaderFactory;
56
+ //# sourceMappingURL=ReaderFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReaderFactory.js","sourceRoot":"","sources":["../src/ReaderFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,6CAA0C;AAC1C,6CAA0C;AAG1C,MAAa,aAAa;IACtB,MAAM,CAAC,MAAM,CAAC,QAAgB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAClB,OAAO,IAAI,uBAAU,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,uBAAU,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;CACJ;AAXD,sCAWC;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { ExcelReaderAbstract } from './ExcelReaderAbstract';
2
+ export declare class XlsbReader extends ExcelReaderAbstract {
3
+ private zip;
4
+ private sharedStrings;
5
+ private sheetNames;
6
+ private sheets;
7
+ private _currentSheetIndex;
8
+ private _reader;
9
+ private _currentRow;
10
+ private _pendingRowIndex;
11
+ private _eof;
12
+ xfIdToNumFmtId: number[];
13
+ customDateFormats: Set<number> | null;
14
+ constructor();
15
+ open(path: string, readSharedStrings?: boolean): Promise<void>;
16
+ private _readSharedStrings;
17
+ private _readStyles;
18
+ getSheetNames(): string[];
19
+ read(): boolean;
20
+ private _initSheet;
21
+ getValue(i: number): any;
22
+ }
23
+ export default XlsbReader;
24
+ //# sourceMappingURL=XlsbReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsbReader.d.ts","sourceRoot":"","sources":["../src/XlsbReader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAS5D,qBAAa,UAAW,SAAQ,mBAAmB;IAC/C,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAmB;IAEjC,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,IAAI,CAAkB;IAE9B,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAQ;;IAMvC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD1E,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,WAAW;IAanB,aAAa,IAAI,MAAM,EAAE;IAIzB,IAAI,IAAI,OAAO;IAmEf,OAAO,CAAC,UAAU;IAqBlB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG;CAI3B;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.XlsbReader = void 0;
7
+ const adm_zip_1 = __importDefault(require("adm-zip"));
8
+ const ExcelReaderAbstract_1 = require("./ExcelReaderAbstract");
9
+ const BiffReaderWriter_1 = require("./BiffReaderWriter");
10
+ class XlsbReader extends ExcelReaderAbstract_1.ExcelReaderAbstract {
11
+ constructor() {
12
+ super();
13
+ this.zip = null;
14
+ this.sharedStrings = [];
15
+ this.sheetNames = [];
16
+ this.sheets = [];
17
+ this._currentSheetIndex = -1;
18
+ this._reader = null;
19
+ this._currentRow = [];
20
+ this._pendingRowIndex = -1;
21
+ this._eof = false;
22
+ this.xfIdToNumFmtId = [];
23
+ this.customDateFormats = null;
24
+ }
25
+ async open(path, readSharedStrings = true) {
26
+ this.zip = new adm_zip_1.default(path);
27
+ const wbEntry = this.zip.getEntry('xl/workbook.bin');
28
+ if (wbEntry) {
29
+ const buf = wbEntry.getData();
30
+ const reader = new BiffReaderWriter_1.BiffReaderWriter(buf);
31
+ while (reader.readWorkbook()) {
32
+ if (reader._isSheet) {
33
+ const name = reader._workbookName;
34
+ const rId = reader._recId;
35
+ this.sheetNames.push(name);
36
+ this.sheets.push({ name, rId, path: null });
37
+ }
38
+ }
39
+ }
40
+ const relsEntry = this.zip.getEntry('xl/_rels/workbook.bin.rels');
41
+ if (relsEntry) {
42
+ const xml = relsEntry.getData().toString('utf8');
43
+ const relRegex = /<Relationship[^>]*Id="([^"]*)"[^>]*Target="([^"]*)"/g;
44
+ let match;
45
+ const rIdToTarget = {};
46
+ while ((match = relRegex.exec(xml)) !== null) {
47
+ rIdToTarget[match[1]] = match[2];
48
+ }
49
+ for (const sheet of this.sheets) {
50
+ let target = rIdToTarget[sheet.rId];
51
+ if (target) {
52
+ if (target.startsWith('/'))
53
+ target = target.substring(1);
54
+ if (!target.startsWith('xl/'))
55
+ target = 'xl/' + target;
56
+ sheet.path = target;
57
+ }
58
+ }
59
+ }
60
+ if (readSharedStrings) {
61
+ const ssPath = 'xl/sharedStrings.bin';
62
+ if (this.zip.getEntry(ssPath)) {
63
+ this._readSharedStrings(ssPath);
64
+ }
65
+ }
66
+ const stylesPath = 'xl/styles.bin';
67
+ if (this.zip.getEntry(stylesPath)) {
68
+ this._readStyles(stylesPath);
69
+ }
70
+ this.resultsCount = this.sheets.length;
71
+ this._currentSheetIndex = -1;
72
+ }
73
+ _readSharedStrings(path) {
74
+ const entry = this.zip.getEntry(path);
75
+ if (!entry)
76
+ return;
77
+ const reader = new BiffReaderWriter_1.BiffReaderWriter(entry.getData());
78
+ while (reader.readSharedStrings()) {
79
+ if (reader._sharedStringValue !== null) {
80
+ this.sharedStrings.push(reader._sharedStringValue);
81
+ }
82
+ }
83
+ }
84
+ _readStyles(path) {
85
+ const entry = this.zip.getEntry(path);
86
+ if (!entry)
87
+ return;
88
+ const reader = new BiffReaderWriter_1.BiffReaderWriter(entry.getData());
89
+ while (reader.readStyles()) {
90
+ // just consume
91
+ }
92
+ this.xfIdToNumFmtId = reader._xfIndexToNumFmtId;
93
+ this.customDateFormats = reader._customNumFmts;
94
+ }
95
+ getSheetNames() {
96
+ return this.sheetNames;
97
+ }
98
+ read() {
99
+ if (this._currentSheetIndex === -1) {
100
+ this._currentSheetIndex = 0;
101
+ if (!this._initSheet(0))
102
+ return false;
103
+ }
104
+ if (this._eof)
105
+ return false;
106
+ this._currentRow = [];
107
+ while (true) {
108
+ const hasRecord = this._reader.readWorksheet();
109
+ if (!hasRecord) {
110
+ this._eof = true;
111
+ return true;
112
+ }
113
+ if (this._reader._rowIndex !== -1 && this._reader._rowIndex !== this._pendingRowIndex) {
114
+ this._pendingRowIndex = this._reader._rowIndex;
115
+ return true;
116
+ }
117
+ if (this._reader._readCell) {
118
+ const col = this._reader._columnNum;
119
+ let val = null;
120
+ switch (this._reader._cellType) {
121
+ case 2:
122
+ val = this.sharedStrings[this._reader._intValue];
123
+ break;
124
+ case 3: {
125
+ val = this._reader._doubleVal;
126
+ const xfIndex = this._reader._xfIndex;
127
+ let numFmtId = 0;
128
+ if (this.xfIdToNumFmtId && xfIndex < this.xfIdToNumFmtId.length) {
129
+ numFmtId = this.xfIdToNumFmtId[xfIndex];
130
+ }
131
+ const isDate = (numFmtId >= 14 && numFmtId <= 22) ||
132
+ (numFmtId >= 45 && numFmtId <= 47) ||
133
+ (this.customDateFormats && this.customDateFormats.has(numFmtId));
134
+ if (isDate) {
135
+ try {
136
+ val = this.getDateTimeFromOaDate(val);
137
+ }
138
+ catch {
139
+ // ignore date conversion errors
140
+ }
141
+ }
142
+ break;
143
+ }
144
+ case 4:
145
+ val = this._reader._boolValue;
146
+ break;
147
+ case 5:
148
+ val = this._reader._stringValue;
149
+ break;
150
+ default:
151
+ val = null;
152
+ }
153
+ this._currentRow[col] = val;
154
+ if (col >= this.fieldCount)
155
+ this.fieldCount = col + 1;
156
+ }
157
+ }
158
+ }
159
+ _initSheet(index) {
160
+ if (index >= this.sheets.length)
161
+ return false;
162
+ const sheet = this.sheets[index];
163
+ const entry = this.zip.getEntry(sheet.path);
164
+ if (!entry)
165
+ return false;
166
+ this._reader = new BiffReaderWriter_1.BiffReaderWriter(entry.getData());
167
+ this._eof = false;
168
+ this._pendingRowIndex = -1;
169
+ while (this._reader.readWorksheet()) {
170
+ if (this._reader._rowIndex !== -1) {
171
+ this._pendingRowIndex = this._reader._rowIndex;
172
+ return true;
173
+ }
174
+ }
175
+ this._eof = true;
176
+ return false;
177
+ }
178
+ getValue(i) {
179
+ if (i < 0 || i >= this._currentRow.length)
180
+ return null;
181
+ return this._currentRow[i];
182
+ }
183
+ }
184
+ exports.XlsbReader = XlsbReader;
185
+ exports.default = XlsbReader;
186
+ //# sourceMappingURL=XlsbReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsbReader.js","sourceRoot":"","sources":["../src/XlsbReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { BigBuffer } from './BigBuffer';
2
+ export declare class XlsbWriter {
3
+ private output;
4
+ private archive;
5
+ private sheetCount;
6
+ private sheetList;
7
+ private sstDic;
8
+ private sstCntUnique;
9
+ private sstCntAll;
10
+ private colWidths;
11
+ private _autofilterIsOn;
12
+ private _oaEpoch;
13
+ private _sheet1Bytes;
14
+ private _workbookBinStart;
15
+ private _workbookBinMiddle;
16
+ private _workbookBinEnd;
17
+ private _stylesBin;
18
+ private _binaryIndexBin;
19
+ private _rRkIntegerLowerLimit;
20
+ private _rRkIntegerUpperLimit;
21
+ private _autoFilterStartBytes;
22
+ private _autoFilterEndBytes;
23
+ private _stickHeaderA1bytes;
24
+ private _magicFilterExcel2016Fix0;
25
+ private _magicFilterExcel2016Fix1;
26
+ private _magicFilterExcel2016Fix2;
27
+ private currentSheetBuffer;
28
+ private currentSheetRowNum;
29
+ private currentSheetStartCol;
30
+ private currentSheetEndCol;
31
+ private currentSheetDoAutofilter;
32
+ private isStreaming;
33
+ constructor(filePath: string);
34
+ private _sanitizeSheetName;
35
+ addSheet(sheetName: string, hidden?: boolean): void;
36
+ /**
37
+ * Start a new sheet in streaming mode. Call writeRow() for each row, then endSheet() when done.
38
+ * @param sheetName Name of the sheet
39
+ * @param columnCount Number of columns in the sheet
40
+ * @param headers Optional header row
41
+ * @param options Optional settings (hidden, doAutofilter)
42
+ */
43
+ startSheet(sheetName: string, columnCount: number, headers?: string[], options?: {
44
+ hidden?: boolean;
45
+ doAutofilter?: boolean;
46
+ }): void;
47
+ /**
48
+ * Write a single row in streaming mode. Must be called between startSheet() and endSheet().
49
+ * @param row Array of cell values
50
+ */
51
+ writeRow(row: any[]): void;
52
+ /**
53
+ * Finalize the current streaming sheet and add it to the archive.
54
+ * Must be called after startSheet() and writeRow() calls.
55
+ */
56
+ endSheet(): void;
57
+ writeSheet(rows: any[][], headers?: string[] | null, doAutofilter?: boolean): void;
58
+ createRowHeader(bigBuf: BigBuffer, rowNumber: number, startCol: number, endCol: number): void;
59
+ writeRkNumberInteger(bigBuf: BigBuffer, val: number, colNum: number, styleNum?: number): void;
60
+ writeDouble(bigBuf: BigBuffer, val: number, colNum: number, styleNum?: number): void;
61
+ writeBool(bigBuf: BigBuffer, val: boolean, colNum: number): void;
62
+ writeDateTime(bigBuf: BigBuffer, date: Date, colNum: number): void;
63
+ writeString(bigBuf: BigBuffer, val: string, colNum: number, bolded?: boolean): void;
64
+ private saveSst;
65
+ private _writeFilterDefinedName;
66
+ finalize(): Promise<void>;
67
+ }
68
+ export default XlsbWriter;
69
+ //# sourceMappingURL=XlsbWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsbWriter.d.ts","sourceRoot":"","sources":["../src/XlsbWriter.ts"],"names":[],"mappings":"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"}