@simplysm/excel 13.0.69 → 13.0.70
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.
- package/README.md +19 -516
- package/dist/excel-cell.d.ts +28 -28
- package/dist/excel-cell.d.ts.map +1 -1
- package/dist/excel-cell.js +24 -24
- package/dist/excel-cell.js.map +1 -1
- package/dist/excel-col.d.ts +4 -4
- package/dist/excel-col.d.ts.map +1 -1
- package/dist/excel-col.js +3 -3
- package/dist/excel-row.d.ts +3 -3
- package/dist/excel-row.d.ts.map +1 -1
- package/dist/excel-row.js +2 -2
- package/dist/excel-workbook.d.ts +23 -23
- package/dist/excel-workbook.d.ts.map +1 -1
- package/dist/excel-workbook.js +15 -15
- package/dist/excel-workbook.js.map +1 -1
- package/dist/excel-worksheet.d.ts +32 -32
- package/dist/excel-worksheet.d.ts.map +1 -1
- package/dist/excel-worksheet.js +32 -32
- package/dist/excel-worksheet.js.map +1 -1
- package/dist/excel-wrapper.d.ts +7 -7
- package/dist/excel-wrapper.js +7 -7
- package/dist/excel-wrapper.js.map +1 -1
- package/dist/types.d.ts +16 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/excel-utils.d.ts +23 -23
- package/dist/utils/excel-utils.d.ts.map +1 -1
- package/dist/utils/excel-utils.js +25 -25
- package/dist/utils/excel-utils.js.map +1 -1
- package/dist/utils/zip-cache.d.ts +6 -6
- package/dist/xml/excel-xml-content-type.d.ts +2 -2
- package/dist/xml/excel-xml-drawing.d.ts +2 -2
- package/dist/xml/excel-xml-relationship.d.ts +2 -2
- package/dist/xml/excel-xml-relationship.js +1 -1
- package/dist/xml/excel-xml-relationship.js.map +1 -1
- package/dist/xml/excel-xml-shared-string.d.ts +2 -2
- package/dist/xml/excel-xml-style.d.ts +2 -2
- package/dist/xml/excel-xml-style.js +6 -6
- package/dist/xml/excel-xml-style.js.map +1 -1
- package/dist/xml/excel-xml-unknown.d.ts +2 -2
- package/dist/xml/excel-xml-workbook.d.ts +2 -2
- package/dist/xml/excel-xml-workbook.js +1 -1
- package/dist/xml/excel-xml-workbook.js.map +1 -1
- package/dist/xml/excel-xml-worksheet.d.ts +6 -6
- package/dist/xml/excel-xml-worksheet.d.ts.map +1 -1
- package/dist/xml/excel-xml-worksheet.js +9 -8
- package/dist/xml/excel-xml-worksheet.js.map +1 -1
- package/package.json +6 -5
- package/src/excel-cell.ts +35 -35
- package/src/excel-col.ts +4 -4
- package/src/excel-row.ts +3 -3
- package/src/excel-workbook.ts +30 -30
- package/src/excel-worksheet.ts +47 -47
- package/src/excel-wrapper.ts +18 -18
- package/src/index.ts +3 -3
- package/src/types.ts +15 -17
- package/src/utils/excel-utils.ts +38 -38
- package/src/utils/zip-cache.ts +6 -6
- package/src/xml/excel-xml-content-type.ts +3 -3
- package/src/xml/excel-xml-drawing.ts +2 -2
- package/src/xml/excel-xml-relationship.ts +3 -3
- package/src/xml/excel-xml-shared-string.ts +2 -2
- package/src/xml/excel-xml-style.ts +11 -11
- package/src/xml/excel-xml-unknown.ts +2 -2
- package/src/xml/excel-xml-workbook.ts +5 -5
- package/src/xml/excel-xml-worksheet.ts +44 -43
- package/tests/excel-cell.spec.ts +448 -0
- package/tests/excel-col.spec.ts +112 -0
- package/tests/excel-row.spec.ts +71 -0
- package/tests/excel-workbook.spec.ts +160 -0
- package/tests/excel-worksheet.spec.ts +389 -0
- package/tests/excel-wrapper.spec.ts +296 -0
- package/tests/fixtures/logo.png +0 -0
- package/tests/image-insert.spec.ts +190 -0
- package/tests/utils/excel-utils.spec.ts +242 -0
package/dist/excel-cell.js
CHANGED
|
@@ -17,10 +17,10 @@ class ExcelCell {
|
|
|
17
17
|
this._c = _c;
|
|
18
18
|
this.addr = { r: this._r, c: this._c };
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/** Cell address (0-based row/column index) */
|
|
21
21
|
addr;
|
|
22
22
|
//#region Value Methods
|
|
23
|
-
/**
|
|
23
|
+
/** Set formula on cell (undefined: remove formula) */
|
|
24
24
|
async setFormula(val) {
|
|
25
25
|
if (val === void 0) {
|
|
26
26
|
await this._deleteCell(this.addr);
|
|
@@ -31,12 +31,12 @@ class ExcelCell {
|
|
|
31
31
|
wsData.setCellFormula(this.addr, val);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
34
|
+
/** Return cell formula */
|
|
35
35
|
async getFormula() {
|
|
36
36
|
const wsData = await this._getWsData();
|
|
37
37
|
return wsData.getCellFormula(this.addr);
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
39
|
+
/** Set cell value (undefined: delete cell) */
|
|
40
40
|
async setVal(val) {
|
|
41
41
|
if (val === void 0) {
|
|
42
42
|
await this._deleteCell(this.addr);
|
|
@@ -70,11 +70,11 @@ class ExcelCell {
|
|
|
70
70
|
});
|
|
71
71
|
} else {
|
|
72
72
|
throw new Error(
|
|
73
|
-
`[${ExcelUtils.stringifyAddr(this.addr)}]
|
|
73
|
+
`[${ExcelUtils.stringifyAddr(this.addr)}] Unsupported type: ${typeof val}`
|
|
74
74
|
);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
/**
|
|
77
|
+
/** Return cell value */
|
|
78
78
|
async getVal() {
|
|
79
79
|
const wsData = await this._getWsData();
|
|
80
80
|
const cellVal = wsData.getCellVal(this.addr);
|
|
@@ -87,7 +87,7 @@ class ExcelCell {
|
|
|
87
87
|
const ssId = numParseInt(cellVal);
|
|
88
88
|
if (ssId == null) {
|
|
89
89
|
throw new Error(
|
|
90
|
-
`[${ExcelUtils.stringifyAddr(this.addr)}] SharedString ID
|
|
90
|
+
`[${ExcelUtils.stringifyAddr(this.addr)}] Failed to parse SharedString ID: ${cellVal}`
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
return ssData.getStringById(ssId);
|
|
@@ -101,7 +101,7 @@ class ExcelCell {
|
|
|
101
101
|
return parseFloat(cellVal);
|
|
102
102
|
} else if (cellType === "e") {
|
|
103
103
|
throw new Error(
|
|
104
|
-
`[${ExcelUtils.stringifyAddr(this.addr)}]
|
|
104
|
+
`[${ExcelUtils.stringifyAddr(this.addr)}] Cell type analysis failed: cell contains error value (${cellVal})`
|
|
105
105
|
);
|
|
106
106
|
} else {
|
|
107
107
|
const cellStyleId = wsData.getCellStyleId(this.addr);
|
|
@@ -124,7 +124,7 @@ class ExcelCell {
|
|
|
124
124
|
const numFmtIdNum = numParseInt(numFmtId);
|
|
125
125
|
if (numFmtIdNum == null) {
|
|
126
126
|
throw new Error(
|
|
127
|
-
`[${ExcelUtils.stringifyAddr(this.addr)}]
|
|
127
|
+
`[${ExcelUtils.stringifyAddr(this.addr)}] Failed to parse numFmtId: ${numFmtId}`
|
|
128
128
|
);
|
|
129
129
|
}
|
|
130
130
|
numFmt = ExcelUtils.convertNumFmtIdToName(numFmtIdNum);
|
|
@@ -137,7 +137,7 @@ class ExcelCell {
|
|
|
137
137
|
const dateNum = numParseFloat(cellVal);
|
|
138
138
|
if (dateNum == null) {
|
|
139
139
|
throw new Error(
|
|
140
|
-
`[${ExcelUtils.stringifyAddr(this.addr)}]
|
|
140
|
+
`[${ExcelUtils.stringifyAddr(this.addr)}] Failed to parse date number: ${cellVal}`
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
143
|
const tick = ExcelUtils.convertNumberToTimeTick(dateNum);
|
|
@@ -154,11 +154,11 @@ class ExcelCell {
|
|
|
154
154
|
//#endregion
|
|
155
155
|
//#region Merge Methods
|
|
156
156
|
/**
|
|
157
|
-
*
|
|
158
|
-
* @param r
|
|
159
|
-
* @param c
|
|
157
|
+
* Merge cells from current cell to the specified end coordinates
|
|
158
|
+
* @param r End row index of merge (0-based)
|
|
159
|
+
* @param c End column index of merge (0-based)
|
|
160
160
|
* @example
|
|
161
|
-
* // A1
|
|
161
|
+
* // Called from cell A1, merges range A1:C3 (3 rows x 3 columns)
|
|
162
162
|
* await ws.cell(0, 0).merge(2, 2);
|
|
163
163
|
*/
|
|
164
164
|
async merge(r, c) {
|
|
@@ -167,30 +167,30 @@ class ExcelCell {
|
|
|
167
167
|
}
|
|
168
168
|
//#endregion
|
|
169
169
|
//#region Style Methods
|
|
170
|
-
/**
|
|
170
|
+
/** Return cell style ID */
|
|
171
171
|
async getStyleId() {
|
|
172
172
|
const wsData = await this._getWsData();
|
|
173
173
|
return wsData.getCellStyleId(this.addr);
|
|
174
174
|
}
|
|
175
|
-
/**
|
|
175
|
+
/** Set cell style ID */
|
|
176
176
|
async setStyleId(styleId) {
|
|
177
177
|
const wsData = await this._getWsData();
|
|
178
178
|
wsData.setCellStyleId(this.addr, styleId);
|
|
179
179
|
}
|
|
180
180
|
/**
|
|
181
|
-
*
|
|
182
|
-
* @param opts
|
|
183
|
-
* @param opts.background
|
|
184
|
-
* @param opts.border
|
|
185
|
-
* @param opts.horizontalAlign
|
|
186
|
-
* @param opts.verticalAlign
|
|
187
|
-
* @param opts.numberFormat
|
|
181
|
+
* Set cell style
|
|
182
|
+
* @param opts Style options
|
|
183
|
+
* @param opts.background Background color (ARGB format, 8-digit hex. e.g. "FFFF0000")
|
|
184
|
+
* @param opts.border Border position array (e.g. ["left", "right", "top", "bottom"])
|
|
185
|
+
* @param opts.horizontalAlign Horizontal alignment ("left", "center", "right")
|
|
186
|
+
* @param opts.verticalAlign Vertical alignment ("top", "center", "bottom")
|
|
187
|
+
* @param opts.numberFormat Number format ("number", "DateOnly", "DateTime", "Time", "string")
|
|
188
188
|
*/
|
|
189
189
|
async setStyle(opts) {
|
|
190
190
|
const style = {};
|
|
191
191
|
if (opts.background != null) {
|
|
192
192
|
if (!/^[0-9A-F]{8}$/i.test(opts.background)) {
|
|
193
|
-
throw new Error("
|
|
193
|
+
throw new Error("Invalid color format. (Format: 00000000: alpha(reversed)+rgb)");
|
|
194
194
|
}
|
|
195
195
|
style.background = opts.background;
|
|
196
196
|
}
|
package/dist/excel-cell.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-cell.ts"],
|
|
4
|
-
"mappings": "AAOA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB,iCAAiC;AAClE,SAAS,iBAAiB,0BAA0B;AACpD,SAAS,kBAAkB;AAkBpB,MAAM,UAAU;AAAA,EAIrB,YACmB,WACA,iBACA,IACA,IACjB;AAJiB;AACA;AACA;AACA;AAEjB,SAAK,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG;AAAA,EACvC;AAAA;AAAA,EATS;AAAA;AAAA;AAAA,EAcT,MAAM,WAAW,KAAwC;AACvD,QAAI,QAAQ,QAAW;AACrB,YAAM,KAAK,YAAY,KAAK,IAAI;AAAA,IAClC,OAAO;AACL,YAAM,SAAS,MAAM,KAAK,WAAW;AACrC,aAAO,YAAY,KAAK,MAAM,KAAK;AACnC,aAAO,WAAW,KAAK,MAAM,MAAS;AACtC,aAAO,eAAe,KAAK,MAAM,GAAG;AAAA,IACtC;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,aAA0C;AAC9C,UAAM,SAAS,MAAM,KAAK,WAAW;AACrC,WAAO,OAAO,eAAe,KAAK,IAAI;AAAA,EACxC;AAAA;AAAA,EAGA,MAAM,OAAO,KAAoC;AAC/C,QAAI,QAAQ,QAAW;AACrB,YAAM,KAAK,YAAY,KAAK,IAAI;AAAA,IAClC,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,SAAS,MAAM,KAAK,WAAW;AACrC,YAAM,SAAS,MAAM,KAAK,mBAAmB;AAC7C,YAAM,OAAO,OAAO,cAAc,GAAG;AACrC,UAAI,SAAS,QAAW;AACtB,eAAO,YAAY,KAAK,MAAM,GAAG;AACjC,eAAO,WAAW,KAAK,MAAM,KAAK,SAAS,CAAC;AAAA,MAC9C,OAAO;AACL,cAAM,UAAU,OAAO,IAAI,GAAG;AAC9B,eAAO,YAAY,KAAK,MAAM,GAAG;AACjC,eAAO,WAAW,KAAK,MAAM,QAAQ,SAAS,CAAC;AAAA,MACjD;AAAA,IACF,WAAW,OAAO,QAAQ,WAAW;AACnC,YAAM,SAAS,MAAM,KAAK,WAAW;AACrC,aAAO,YAAY,KAAK,MAAM,GAAG;AACjC,aAAO,WAAW,KAAK,MAAM,MAAM,MAAM,GAAG;AAAA,IAC9C,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,SAAS,MAAM,KAAK,WAAW;AACrC,aAAO,YAAY,KAAK,MAAM,MAAS;AACvC,aAAO,WAAW,KAAK,MAAM,IAAI,SAAS,CAAC;AAAA,IAC7C,WAAW,eAAe,YAAY,eAAe,YAAY,eAAe,MAAM;AACpF,YAAM,SAAS,MAAM,KAAK,WAAW;AACrC,aAAO,YAAY,KAAK,MAAM,MAAS;AACvC,aAAO,WAAW,KAAK,MAAM,WAAW,wBAAwB,IAAI,IAAI,EAAE,SAAS,CAAC;AAEpF,YAAM,aACJ,eAAe,WAAW,aAAa,eAAe,WAAW,aAAa;AAChF,YAAM,KAAK,kBAAkB;AAAA,QAC3B,UAAU,WAAW,sBAAsB,UAAU,EAAE,SAAS;AAAA,MAClE,CAAC;AAAA,IACH,OAAO;AACL,YAAM,IAAI;AAAA,QACR,IAAI,WAAW,cAAc,KAAK,IAAI,CAAC,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/excel-col.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
2
|
import { ExcelCell } from "./excel-cell";
|
|
3
3
|
import type { ZipCache } from "./utils/zip-cache";
|
|
4
|
-
/**
|
|
4
|
+
/** Class representing a column in an Excel worksheet. Provides cell access and column width configuration. */
|
|
5
5
|
export declare class ExcelCol {
|
|
6
6
|
private readonly _zipCache;
|
|
7
7
|
private readonly _targetFileName;
|
|
8
8
|
private readonly _c;
|
|
9
9
|
private readonly _cellMap;
|
|
10
10
|
constructor(_zipCache: ZipCache, _targetFileName: string, _c: number);
|
|
11
|
-
/**
|
|
11
|
+
/** Return cell at the given row index (0-based) */
|
|
12
12
|
cell(r: number): ExcelCell;
|
|
13
|
-
/**
|
|
13
|
+
/** Return all cells in the column */
|
|
14
14
|
getCells(): Promise<ExcelCell[]>;
|
|
15
|
-
/**
|
|
15
|
+
/** Set column width */
|
|
16
16
|
setWidth(size: number): Promise<void>;
|
|
17
17
|
private _getWsData;
|
|
18
18
|
}
|
package/dist/excel-col.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-col.d.ts","sourceRoot":"","sources":["..\\src\\excel-col.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"excel-col.d.ts","sourceRoot":"","sources":["..\\src\\excel-col.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,8GAA8G;AAC9G,qBAAa,QAAQ;IAIjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE;IALrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAGtC,SAAS,EAAE,QAAQ,EACnB,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM;IAG7B,mDAAmD;IACnD,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;IAO1B,qCAAqC;IAC/B,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAYtC,uBAAuB;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAK7B,UAAU;CAGzB"}
|
package/dist/excel-col.js
CHANGED
|
@@ -7,14 +7,14 @@ class ExcelCol {
|
|
|
7
7
|
this._c = _c;
|
|
8
8
|
}
|
|
9
9
|
_cellMap = /* @__PURE__ */ new Map();
|
|
10
|
-
/**
|
|
10
|
+
/** Return cell at the given row index (0-based) */
|
|
11
11
|
cell(r) {
|
|
12
12
|
return this._cellMap.getOrCreate(
|
|
13
13
|
r,
|
|
14
14
|
new ExcelCell(this._zipCache, this._targetFileName, r, this._c)
|
|
15
15
|
);
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
17
|
+
/** Return all cells in the column */
|
|
18
18
|
async getCells() {
|
|
19
19
|
const result = [];
|
|
20
20
|
const wsData = await this._getWsData();
|
|
@@ -24,7 +24,7 @@ class ExcelCol {
|
|
|
24
24
|
}
|
|
25
25
|
return result;
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
27
|
+
/** Set column width */
|
|
28
28
|
async setWidth(size) {
|
|
29
29
|
const wsData = await this._getWsData();
|
|
30
30
|
wsData.setColWidth((this._c + 1).toString(), size.toString());
|
package/dist/excel-row.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
2
|
import { ExcelCell } from "./excel-cell";
|
|
3
3
|
import type { ZipCache } from "./utils/zip-cache";
|
|
4
|
-
/**
|
|
4
|
+
/** Class representing a row in an Excel worksheet. Provides cell access functionality. */
|
|
5
5
|
export declare class ExcelRow {
|
|
6
6
|
private readonly _zipCache;
|
|
7
7
|
private readonly _targetFileName;
|
|
8
8
|
private readonly _r;
|
|
9
9
|
private readonly _cellMap;
|
|
10
10
|
constructor(_zipCache: ZipCache, _targetFileName: string, _r: number);
|
|
11
|
-
/**
|
|
11
|
+
/** Return cell at the given column index (0-based) */
|
|
12
12
|
cell(c: number): ExcelCell;
|
|
13
|
-
/**
|
|
13
|
+
/** Return all cells in the row */
|
|
14
14
|
getCells(): Promise<ExcelCell[]>;
|
|
15
15
|
private _getWsData;
|
|
16
16
|
}
|
package/dist/excel-row.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-row.d.ts","sourceRoot":"","sources":["..\\src\\excel-row.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"excel-row.d.ts","sourceRoot":"","sources":["..\\src\\excel-row.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,0FAA0F;AAC1F,qBAAa,QAAQ;IAIjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE;IALrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAGtC,SAAS,EAAE,QAAQ,EACnB,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM;IAG7B,sDAAsD;IACtD,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;IAO1B,kCAAkC;IAC5B,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAYxB,UAAU;CAGzB"}
|
package/dist/excel-row.js
CHANGED
|
@@ -7,14 +7,14 @@ class ExcelRow {
|
|
|
7
7
|
this._r = _r;
|
|
8
8
|
}
|
|
9
9
|
_cellMap = /* @__PURE__ */ new Map();
|
|
10
|
-
/**
|
|
10
|
+
/** Return cell at the given column index (0-based) */
|
|
11
11
|
cell(c) {
|
|
12
12
|
return this._cellMap.getOrCreate(
|
|
13
13
|
c,
|
|
14
14
|
new ExcelCell(this._zipCache, this._targetFileName, this._r, c)
|
|
15
15
|
);
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
17
|
+
/** Return all cells in the row */
|
|
18
18
|
async getCells() {
|
|
19
19
|
const result = [];
|
|
20
20
|
const wsData = await this._getWsData();
|
package/dist/excel-workbook.d.ts
CHANGED
|
@@ -2,32 +2,32 @@ import type { Bytes } from "@simplysm/core-common";
|
|
|
2
2
|
import { ExcelWorksheet } from "./excel-worksheet";
|
|
3
3
|
import { ZipCache } from "./utils/zip-cache";
|
|
4
4
|
/**
|
|
5
|
-
* Excel
|
|
5
|
+
* Excel workbook processing class
|
|
6
6
|
*
|
|
7
7
|
* @remarks
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* This class internally manages ZIP resources.
|
|
9
|
+
* Resources must be released after use.
|
|
10
10
|
*
|
|
11
|
-
* ##
|
|
11
|
+
* ## Async Design
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
* - ZIP
|
|
15
|
-
* - SharedStrings
|
|
16
|
-
* -
|
|
13
|
+
* Adopts a Lazy Loading architecture for memory efficiency with large Excel files:
|
|
14
|
+
* - XML inside the ZIP is read and parsed only at the point of access
|
|
15
|
+
* - Large XML such as SharedStrings and Styles is loaded only when needed
|
|
16
|
+
* - Memory efficient even in extreme cases (e.g., reading a single number cell from a file with 1TB SharedStrings)
|
|
17
17
|
*
|
|
18
18
|
* @example
|
|
19
19
|
* ```typescript
|
|
20
|
-
* // await using
|
|
20
|
+
* // Using await using (recommended)
|
|
21
21
|
* await using wb = new ExcelWorkbook(bytes);
|
|
22
22
|
* const ws = await wb.getWorksheet(0);
|
|
23
|
-
* // ...
|
|
24
|
-
* //
|
|
23
|
+
* // ... perform operations
|
|
24
|
+
* // Resources automatically released at scope exit
|
|
25
25
|
*
|
|
26
|
-
* //
|
|
26
|
+
* // Or using try-finally
|
|
27
27
|
* const wb = new ExcelWorkbook(bytes);
|
|
28
28
|
* try {
|
|
29
29
|
* const ws = await wb.getWorksheet(0);
|
|
30
|
-
* // ...
|
|
30
|
+
* // ... perform operations
|
|
31
31
|
* } finally {
|
|
32
32
|
* await wb.close();
|
|
33
33
|
* }
|
|
@@ -38,27 +38,27 @@ export declare class ExcelWorkbook {
|
|
|
38
38
|
private readonly _wsMap;
|
|
39
39
|
private _isClosed;
|
|
40
40
|
/**
|
|
41
|
-
* @param arg
|
|
41
|
+
* @param arg Existing Excel file data (Blob or Uint8Array). Creates a new workbook if omitted.
|
|
42
42
|
*/
|
|
43
43
|
constructor(arg?: Blob | Bytes);
|
|
44
44
|
private _ensureNotClosed;
|
|
45
|
-
/**
|
|
45
|
+
/** Return all worksheet names in the workbook */
|
|
46
46
|
getWorksheetNames(): Promise<string[]>;
|
|
47
|
-
/**
|
|
47
|
+
/** Create and return a new worksheet */
|
|
48
48
|
createWorksheet(name: string): Promise<ExcelWorksheet>;
|
|
49
|
-
/**
|
|
49
|
+
/** Look up a worksheet by name or index (0-based) */
|
|
50
50
|
getWorksheet(nameOrIndex: string | number): Promise<ExcelWorksheet>;
|
|
51
|
-
/**
|
|
51
|
+
/** Export workbook as byte array */
|
|
52
52
|
getBytes(): Promise<Bytes>;
|
|
53
|
-
/**
|
|
53
|
+
/** Export workbook as Blob */
|
|
54
54
|
getBlob(): Promise<Blob>;
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* Release workbook resources
|
|
57
57
|
*
|
|
58
58
|
* @remarks
|
|
59
|
-
* ZIP
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* Cleans up the ZIP reader and internal cache.
|
|
60
|
+
* The workbook instance cannot be used after this call.
|
|
61
|
+
* Safe to call on an already closed workbook (no-op).
|
|
62
62
|
*/
|
|
63
63
|
close(): Promise<void>;
|
|
64
64
|
[Symbol.asyncDispose](): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-workbook.d.ts","sourceRoot":"","sources":["..\\src\\excel-workbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;gBACS,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK;IA+B9B,OAAO,CAAC,gBAAgB;IAMxB,
|
|
1
|
+
{"version":3,"file":"excel-workbook.d.ts","sourceRoot":"","sources":["..\\src\\excel-workbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;gBACS,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK;IA+B9B,OAAO,CAAC,gBAAgB;IAMxB,iDAAiD;IAC3C,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM5C,wCAAwC;IAClC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgC5D,qDAAqD;IAC/C,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyCzE,oCAAoC;IAC9B,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAKhC,8BAA8B;IACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7C"}
|
package/dist/excel-workbook.js
CHANGED
|
@@ -9,7 +9,7 @@ class ExcelWorkbook {
|
|
|
9
9
|
_wsMap = /* @__PURE__ */ new Map();
|
|
10
10
|
_isClosed = false;
|
|
11
11
|
/**
|
|
12
|
-
* @param arg
|
|
12
|
+
* @param arg Existing Excel file data (Blob or Uint8Array). Creates a new workbook if omitted.
|
|
13
13
|
*/
|
|
14
14
|
constructor(arg) {
|
|
15
15
|
if (arg != null) {
|
|
@@ -34,16 +34,16 @@ class ExcelWorkbook {
|
|
|
34
34
|
//#region Worksheet Methods
|
|
35
35
|
_ensureNotClosed() {
|
|
36
36
|
if (this._isClosed) {
|
|
37
|
-
throw new Error("ExcelWorkbook
|
|
37
|
+
throw new Error("ExcelWorkbook is already closed. Cannot use after calling close().");
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
/**
|
|
40
|
+
/** Return all worksheet names in the workbook */
|
|
41
41
|
async getWorksheetNames() {
|
|
42
42
|
this._ensureNotClosed();
|
|
43
43
|
const wbData = await this.zipCache.get("xl/workbook.xml");
|
|
44
44
|
return wbData.sheetNames;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
46
|
+
/** Create and return a new worksheet */
|
|
47
47
|
async createWorksheet(name) {
|
|
48
48
|
this._ensureNotClosed();
|
|
49
49
|
const wbXml = await this.zipCache.get("xl/workbook.xml");
|
|
@@ -67,16 +67,16 @@ class ExcelWorkbook {
|
|
|
67
67
|
this._wsMap.set(newWsRelId, ws);
|
|
68
68
|
return ws;
|
|
69
69
|
}
|
|
70
|
-
/**
|
|
70
|
+
/** Look up a worksheet by name or index (0-based) */
|
|
71
71
|
async getWorksheet(nameOrIndex) {
|
|
72
72
|
this._ensureNotClosed();
|
|
73
73
|
const wbData = await this.zipCache.get("xl/workbook.xml");
|
|
74
74
|
const wsId = typeof nameOrIndex === "string" ? wbData.getWsRelIdByName(nameOrIndex) : wbData.getWsRelIdByIndex(nameOrIndex);
|
|
75
75
|
if (wsId === void 0) {
|
|
76
76
|
if (typeof nameOrIndex === "string") {
|
|
77
|
-
throw new Error(
|
|
77
|
+
throw new Error(`Cannot find sheet with name '${nameOrIndex}'.`);
|
|
78
78
|
} else {
|
|
79
|
-
throw new Error(`'${nameOrIndex}'
|
|
79
|
+
throw new Error(`Cannot find sheet at index '${nameOrIndex}'.`);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
if (this._wsMap.has(wsId)) {
|
|
@@ -85,11 +85,11 @@ class ExcelWorkbook {
|
|
|
85
85
|
const relData = await this.zipCache.get("xl/_rels/workbook.xml.rels");
|
|
86
86
|
const targetFilePath = relData.getTargetByRelId(wsId);
|
|
87
87
|
if (targetFilePath == null) {
|
|
88
|
-
throw new Error(
|
|
88
|
+
throw new Error(`Cannot find sheet relationship information: rId${wsId}`);
|
|
89
89
|
}
|
|
90
90
|
const fileName = targetFilePath.split("/").pop();
|
|
91
91
|
if (fileName == null) {
|
|
92
|
-
throw new Error(
|
|
92
|
+
throw new Error(`Cannot extract sheet filename: ${targetFilePath}`);
|
|
93
93
|
}
|
|
94
94
|
const ws = new ExcelWorksheet(this.zipCache, wsId, fileName);
|
|
95
95
|
this._wsMap.set(wsId, ws);
|
|
@@ -97,12 +97,12 @@ class ExcelWorkbook {
|
|
|
97
97
|
}
|
|
98
98
|
//#endregion
|
|
99
99
|
//#region Export Methods
|
|
100
|
-
/**
|
|
100
|
+
/** Export workbook as byte array */
|
|
101
101
|
async getBytes() {
|
|
102
102
|
this._ensureNotClosed();
|
|
103
103
|
return this.zipCache.toBytes();
|
|
104
104
|
}
|
|
105
|
-
/**
|
|
105
|
+
/** Export workbook as Blob */
|
|
106
106
|
async getBlob() {
|
|
107
107
|
this._ensureNotClosed();
|
|
108
108
|
const bytes = await this.zipCache.toBytes();
|
|
@@ -113,12 +113,12 @@ class ExcelWorkbook {
|
|
|
113
113
|
//#endregion
|
|
114
114
|
//#region Lifecycle Methods
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
116
|
+
* Release workbook resources
|
|
117
117
|
*
|
|
118
118
|
* @remarks
|
|
119
|
-
* ZIP
|
|
120
|
-
*
|
|
121
|
-
*
|
|
119
|
+
* Cleans up the ZIP reader and internal cache.
|
|
120
|
+
* The workbook instance cannot be used after this call.
|
|
121
|
+
* Safe to call on an already closed workbook (no-op).
|
|
122
122
|
*/
|
|
123
123
|
async close() {
|
|
124
124
|
if (this._isClosed) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-workbook.ts"],
|
|
4
|
-
"mappings": "AACA,SAAS,sBAAsB;AAC/B,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAErC,SAAS,oBAAoB,6BAA6B;AAC1D,SAAS,qBAAqB,8BAA8B;AAkCrD,MAAM,cAAc;AAAA,EAChB;AAAA,EACQ,SAAS,oBAAI,IAA4B;AAAA,EAClD,YAAY;AAAA;AAAA;AAAA;AAAA,EAKpB,YAAY,KAAoB;AAC9B,QAAI,OAAO,MAAM;AACf,WAAK,WAAW,IAAI,SAAS,GAAG;AAAA,IAClC,OAAO;AACL,WAAK,WAAW,IAAI,SAAS;AAG7B,YAAM,UAAU,IAAI,oBAAoB;AACxC,WAAK,SAAS,IAAI,uBAAuB,OAAO;AAGhD,WAAK,SAAS;AAAA,QACZ;AAAA,QACA,IAAI,qBAAqB,EAAE;AAAA,UACzB;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAGA,YAAM,QAAQ,IAAI,sBAAsB;AACxC,WAAK,SAAS,IAAI,mBAAmB,KAAK;AAG1C,YAAM,WAAW,IAAI,qBAAqB;AAC1C,WAAK,SAAS,IAAI,8BAA8B,QAAQ;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA,EAIQ,mBAAyB;AAC/B,QAAI,KAAK,WAAW;AAClB,YAAM,IAAI,MAAM,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,8 +6,8 @@ import { ExcelRow } from "./excel-row";
|
|
|
6
6
|
import type { ExcelAddressPoint, ExcelAddressRangePoint, ExcelValueType } from "./types";
|
|
7
7
|
import type { ZipCache } from "./utils/zip-cache";
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Class representing an Excel worksheet.
|
|
10
|
+
* Provides cell access, row/column copying, data table processing, and image insertion.
|
|
11
11
|
*/
|
|
12
12
|
export declare class ExcelWorksheet {
|
|
13
13
|
private readonly _zipCache;
|
|
@@ -16,40 +16,40 @@ export declare class ExcelWorksheet {
|
|
|
16
16
|
private readonly _rowMap;
|
|
17
17
|
private readonly _colMap;
|
|
18
18
|
constructor(_zipCache: ZipCache, _relId: number, _targetFileName: string);
|
|
19
|
-
/**
|
|
19
|
+
/** Return worksheet name */
|
|
20
20
|
getName(): Promise<string>;
|
|
21
|
-
/**
|
|
21
|
+
/** Rename worksheet */
|
|
22
22
|
setName(newName: string): Promise<void>;
|
|
23
|
-
/**
|
|
23
|
+
/** Return row object (0-based) */
|
|
24
24
|
row(r: number): ExcelRow;
|
|
25
|
-
/**
|
|
25
|
+
/** Return cell object (0-based row/column) */
|
|
26
26
|
cell(r: number, c: number): ExcelCell;
|
|
27
|
-
/**
|
|
27
|
+
/** Return column object (0-based) */
|
|
28
28
|
col(c: number): ExcelCol;
|
|
29
|
-
/**
|
|
29
|
+
/** Copy style from source row to target row */
|
|
30
30
|
copyRowStyle(srcR: number, targetR: number): Promise<void>;
|
|
31
|
-
/**
|
|
31
|
+
/** Copy style from source cell to target cell */
|
|
32
32
|
copyCellStyle(srcAddr: ExcelAddressPoint, targetAddr: ExcelAddressPoint): Promise<void>;
|
|
33
|
-
/**
|
|
33
|
+
/** Copy source row to target row (overwrite) */
|
|
34
34
|
copyRow(srcR: number, targetR: number): Promise<void>;
|
|
35
|
-
/**
|
|
35
|
+
/** Copy source cell to target cell */
|
|
36
36
|
copyCell(srcAddr: ExcelAddressPoint, targetAddr: ExcelAddressPoint): Promise<void>;
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* @param srcR
|
|
41
|
-
* @param targetR
|
|
38
|
+
* Insert-copy the source row at the target position.
|
|
39
|
+
* Existing rows at and below the target are shifted down by one.
|
|
40
|
+
* @param srcR Source row index to copy (0-based)
|
|
41
|
+
* @param targetR Target row index to insert at (0-based)
|
|
42
42
|
*/
|
|
43
43
|
insertCopyRow(srcR: number, targetR: number): Promise<void>;
|
|
44
|
-
/**
|
|
44
|
+
/** Return data range of the worksheet */
|
|
45
45
|
getRange(): Promise<ExcelAddressRangePoint>;
|
|
46
|
-
/**
|
|
46
|
+
/** Return all cells as a 2D array */
|
|
47
47
|
getCells(): Promise<ExcelCell[][]>;
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
50
|
-
* @param opt.headerRowIndex
|
|
51
|
-
* @param opt.checkEndColIndex
|
|
52
|
-
* @param opt.usableHeaderNameFn
|
|
49
|
+
* Return worksheet data as a table (record array).
|
|
50
|
+
* @param opt.headerRowIndex Header row index (default: first row)
|
|
51
|
+
* @param opt.checkEndColIndex Column index to determine data end. Data ends when this column is empty.
|
|
52
|
+
* @param opt.usableHeaderNameFn Function to filter usable headers
|
|
53
53
|
*/
|
|
54
54
|
getDataTable(opt?: {
|
|
55
55
|
headerRowIndex?: number;
|
|
@@ -57,28 +57,28 @@ export declare class ExcelWorksheet {
|
|
|
57
57
|
usableHeaderNameFn?: (headerName: string) => boolean;
|
|
58
58
|
}): Promise<Record<string, ExcelValueType>[]>;
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @param matrix
|
|
60
|
+
* Write 2D array data to the worksheet
|
|
61
|
+
* @param matrix 2D array data (row-major, index 0 is the first row)
|
|
62
62
|
*/
|
|
63
63
|
setDataMatrix(matrix: ExcelValueType[][]): Promise<void>;
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
66
|
-
* @param records
|
|
65
|
+
* Write record array to the worksheet
|
|
66
|
+
* @param records Record array. Headers are auto-generated in the first row, data follows in subsequent rows.
|
|
67
67
|
*/
|
|
68
68
|
setRecords(records: Record<string, ExcelValueType>[]): Promise<void>;
|
|
69
|
-
/**
|
|
69
|
+
/** Set worksheet zoom scale (percent) */
|
|
70
70
|
setZoom(percent: number): Promise<void>;
|
|
71
|
-
/**
|
|
71
|
+
/** Set freeze panes for rows/columns */
|
|
72
72
|
setFix(point: {
|
|
73
73
|
r?: number;
|
|
74
74
|
c?: number;
|
|
75
75
|
}): Promise<void>;
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
78
|
-
* @param opts.bytes
|
|
79
|
-
* @param opts.ext
|
|
80
|
-
* @param opts.from
|
|
81
|
-
* @param opts.to
|
|
77
|
+
* Insert an image into the worksheet.
|
|
78
|
+
* @param opts.bytes Image binary data
|
|
79
|
+
* @param opts.ext Image extension (png, jpg, etc.)
|
|
80
|
+
* @param opts.from Image start position (0-based row/column index, rOff/cOff in EMU offset)
|
|
81
|
+
* @param opts.to Image end position (if omitted, inserted at from position with original size)
|
|
82
82
|
*/
|
|
83
83
|
addImage(opts: {
|
|
84
84
|
bytes: Bytes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-worksheet.d.ts","sourceRoot":"","sources":["..\\src\\excel-worksheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD;;;GAGG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IANlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAGpC,SAAS,EAAE,QAAQ,EACnB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM;IAK1C,
|
|
1
|
+
{"version":3,"file":"excel-worksheet.d.ts","sourceRoot":"","sources":["..\\src\\excel-worksheet.ts"],"names":[],"mappings":"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"}
|