@simplysm/excel 13.0.100 → 14.0.4
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 +66 -78
- package/dist/excel-cell.d.ts +28 -28
- package/dist/excel-cell.d.ts.map +1 -1
- package/dist/excel-cell.js +273 -264
- package/dist/excel-cell.js.map +1 -6
- package/dist/excel-col.d.ts +4 -4
- package/dist/excel-col.d.ts.map +1 -1
- package/dist/excel-col.js +33 -35
- package/dist/excel-col.js.map +1 -6
- package/dist/excel-row.d.ts +3 -3
- package/dist/excel-row.d.ts.map +1 -1
- package/dist/excel-row.js +28 -30
- package/dist/excel-row.js.map +1 -6
- package/dist/excel-workbook.d.ts +23 -23
- package/dist/excel-workbook.d.ts.map +1 -1
- package/dist/excel-workbook.js +151 -125
- package/dist/excel-workbook.js.map +1 -6
- package/dist/excel-worksheet.d.ts +32 -32
- package/dist/excel-worksheet.d.ts.map +1 -1
- package/dist/excel-worksheet.js +281 -253
- package/dist/excel-worksheet.js.map +1 -6
- package/dist/excel-wrapper.d.ts +7 -7
- package/dist/excel-wrapper.d.ts.map +1 -1
- package/dist/excel-wrapper.js +190 -226
- package/dist/excel-wrapper.js.map +1 -6
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -6
- package/dist/types.d.ts +13 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -1
- package/dist/types.js.map +1 -6
- 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 +183 -151
- package/dist/utils/excel-utils.js.map +1 -6
- package/dist/utils/zip-cache.d.ts +6 -6
- package/dist/utils/zip-cache.js +78 -60
- package/dist/utils/zip-cache.js.map +1 -6
- package/dist/xml/excel-xml-content-type.d.ts +2 -2
- package/dist/xml/excel-xml-content-type.js +55 -53
- package/dist/xml/excel-xml-content-type.js.map +1 -6
- package/dist/xml/excel-xml-drawing.d.ts +2 -2
- package/dist/xml/excel-xml-drawing.js +74 -73
- package/dist/xml/excel-xml-drawing.js.map +1 -6
- package/dist/xml/excel-xml-relationship.d.ts +2 -2
- package/dist/xml/excel-xml-relationship.js +67 -67
- package/dist/xml/excel-xml-relationship.js.map +1 -6
- package/dist/xml/excel-xml-shared-string.d.ts +2 -2
- package/dist/xml/excel-xml-shared-string.js +57 -55
- package/dist/xml/excel-xml-shared-string.js.map +1 -6
- package/dist/xml/excel-xml-style.d.ts +2 -2
- package/dist/xml/excel-xml-style.js +311 -295
- package/dist/xml/excel-xml-style.js.map +1 -6
- package/dist/xml/excel-xml-unknown.d.ts +2 -2
- package/dist/xml/excel-xml-unknown.js +11 -10
- package/dist/xml/excel-xml-unknown.js.map +1 -6
- package/dist/xml/excel-xml-workbook.d.ts +3 -2
- package/dist/xml/excel-xml-workbook.d.ts.map +1 -1
- package/dist/xml/excel-xml-workbook.js +95 -90
- package/dist/xml/excel-xml-workbook.js.map +1 -6
- package/dist/xml/excel-xml-worksheet.d.ts +6 -6
- package/dist/xml/excel-xml-worksheet.js +450 -393
- package/dist/xml/excel-xml-worksheet.js.map +1 -6
- package/docs/core.md +147 -0
- package/docs/types.md +201 -212
- package/docs/wrapper.md +32 -62
- package/package.json +8 -6
- package/src/excel-cell.ts +36 -36
- package/src/excel-col.ts +4 -4
- package/src/excel-row.ts +3 -3
- package/src/excel-workbook.ts +38 -38
- package/src/excel-worksheet.ts +69 -51
- package/src/excel-wrapper.ts +55 -50
- package/src/index.ts +3 -3
- package/src/types.ts +17 -17
- package/src/utils/excel-utils.ts +47 -41
- 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 +13 -13
- package/src/xml/excel-xml-unknown.ts +2 -2
- package/src/xml/excel-xml-workbook.ts +14 -6
- package/src/xml/excel-xml-worksheet.ts +43 -43
- package/docs/core-classes.md +0 -541
- package/docs/utilities.md +0 -128
- package/tests/excel-cell.spec.ts +0 -393
- package/tests/excel-col.spec.ts +0 -81
- package/tests/excel-row.spec.ts +0 -61
- package/tests/excel-workbook.spec.ts +0 -205
- package/tests/excel-worksheet.spec.ts +0 -469
- package/tests/excel-wrapper.spec.ts +0 -273
- package/tests/fixtures/logo.png +0 -0
- package/tests/fixtures//354/264/210/352/270/260/355/231/224.xlsx +0 -0
- package/tests/image-insert.spec.ts +0 -190
- package/tests/utils/excel-utils.spec.ts +0 -198
package/dist/excel-col.js
CHANGED
|
@@ -1,39 +1,37 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
2
|
import { ExcelCell } from "./excel-cell.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
3
|
+
/** Excel 워크시트의 열을 나타내는 클래스. 셀 접근 및 열 너비 설정 기능을 제공한다. */
|
|
4
|
+
export class ExcelCol {
|
|
5
|
+
_zipCache;
|
|
6
|
+
_targetFileName;
|
|
7
|
+
_c;
|
|
8
|
+
_cellMap = new Map();
|
|
9
|
+
constructor(_zipCache, _targetFileName, _c) {
|
|
10
|
+
this._zipCache = _zipCache;
|
|
11
|
+
this._targetFileName = _targetFileName;
|
|
12
|
+
this._c = _c;
|
|
13
|
+
}
|
|
14
|
+
/** 지정된 행 인덱스의 셀 반환 (0 기반) */
|
|
15
|
+
cell(r) {
|
|
16
|
+
return this._cellMap.getOrCreate(r, new ExcelCell(this._zipCache, this._targetFileName, r, this._c));
|
|
17
|
+
}
|
|
18
|
+
/** 열의 모든 셀 반환 */
|
|
19
|
+
async getCells() {
|
|
20
|
+
const result = [];
|
|
21
|
+
const wsData = await this._getWsData();
|
|
22
|
+
const range = wsData.range;
|
|
23
|
+
for (let r = range.s.r; r <= range.e.r; r++) {
|
|
24
|
+
result[r] = this.cell(r);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
/** 열 너비 설정 */
|
|
29
|
+
async setWidth(size) {
|
|
30
|
+
const wsData = await this._getWsData();
|
|
31
|
+
wsData.setColWidth((this._c + 1).toString(), size.toString());
|
|
32
|
+
}
|
|
33
|
+
async _getWsData() {
|
|
34
|
+
return (await this._zipCache.get(`xl/worksheets/${this._targetFileName}`));
|
|
24
35
|
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
/** Set column width */
|
|
28
|
-
async setWidth(size) {
|
|
29
|
-
const wsData = await this._getWsData();
|
|
30
|
-
wsData.setColWidth((this._c + 1).toString(), size.toString());
|
|
31
|
-
}
|
|
32
|
-
async _getWsData() {
|
|
33
|
-
return await this._zipCache.get(`xl/worksheets/${this._targetFileName}`);
|
|
34
|
-
}
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
ExcelCol
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=excel-col.js.map
|
|
37
|
+
//# sourceMappingURL=excel-col.js.map
|
package/dist/excel-col.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/excel-col.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO;AACP,SAAS,iBAAiB;AAKnB,MAAM,SAAS;AAAA,EAGpB,YACmB,WACA,iBACA,IACjB;AAHiB;AACA;AACA;AAAA,EAChB;AAAA,EANc,WAAW,oBAAI,IAAuB;AAAA;AAAA,EASvD,KAAK,GAAsB;AACzB,WAAO,KAAK,SAAS;AAAA,MACnB;AAAA,MACA,IAAI,UAAU,KAAK,WAAW,KAAK,iBAAiB,GAAG,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,WAAiC;AACrC,UAAM,SAAsB,CAAC;AAC7B,UAAM,SAAS,MAAM,KAAK,WAAW;AACrC,UAAM,QAAQ,OAAO;AAErB,aAAS,IAAI,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,KAAK;AAC3C,aAAO,CAAC,IAAI,KAAK,KAAK,CAAC;AAAA,IACzB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,SAAS,MAA6B;AAC1C,UAAM,SAAS,MAAM,KAAK,WAAW;AACrC,WAAO,aAAa,KAAK,KAAK,GAAG,SAAS,GAAG,KAAK,SAAS,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAc,aAAyC;AACrD,WAAQ,MAAM,KAAK,UAAU,IAAI,iBAAiB,KAAK,eAAe,EAAE;AAAA,EAC1E;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"excel-col.js","sourceRoot":"","sources":["..\\src\\excel-col.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,wDAAwD;AACxD,MAAM,OAAO,QAAQ;IAIA;IACA;IACA;IALF,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEzD,YACmB,SAAmB,EACnB,eAAuB,EACvB,EAAU;QAFV,cAAS,GAAT,SAAS,CAAU;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,OAAE,GAAF,EAAE,CAAQ;IAC1B,CAAC;IAEJ,6BAA6B;IAC7B,IAAI,CAAC,CAAS;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,CAAC,EACD,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;IACd,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAsB,CAAC;IAClG,CAAC;CACF"}
|
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
|
+
/** Excel 워크시트의 행을 나타내는 클래스. 셀 접근 기능을 제공한다. */
|
|
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
|
+
/** 지정된 열 인덱스의 셀 반환 (0 기반) */
|
|
12
12
|
cell(c: number): ExcelCell;
|
|
13
|
-
/**
|
|
13
|
+
/** 행의 모든 셀 반환 */
|
|
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,8CAA8C;AAC9C,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,6BAA6B;IAC7B,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;IAO1B,iBAAiB;IACX,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAYxB,UAAU;CAGzB"}
|
package/dist/excel-row.js
CHANGED
|
@@ -1,34 +1,32 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
2
|
import { ExcelCell } from "./excel-cell.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
3
|
+
/** Excel 워크시트의 행을 나타내는 클래스. 셀 접근 기능을 제공한다. */
|
|
4
|
+
export class ExcelRow {
|
|
5
|
+
_zipCache;
|
|
6
|
+
_targetFileName;
|
|
7
|
+
_r;
|
|
8
|
+
_cellMap = new Map();
|
|
9
|
+
constructor(_zipCache, _targetFileName, _r) {
|
|
10
|
+
this._zipCache = _zipCache;
|
|
11
|
+
this._targetFileName = _targetFileName;
|
|
12
|
+
this._r = _r;
|
|
13
|
+
}
|
|
14
|
+
/** 지정된 열 인덱스의 셀 반환 (0 기반) */
|
|
15
|
+
cell(c) {
|
|
16
|
+
return this._cellMap.getOrCreate(c, new ExcelCell(this._zipCache, this._targetFileName, this._r, c));
|
|
17
|
+
}
|
|
18
|
+
/** 행의 모든 셀 반환 */
|
|
19
|
+
async getCells() {
|
|
20
|
+
const result = [];
|
|
21
|
+
const wsData = await this._getWsData();
|
|
22
|
+
const range = wsData.range;
|
|
23
|
+
for (let c = range.s.c; c <= range.e.c; c++) {
|
|
24
|
+
result[c] = this.cell(c);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
async _getWsData() {
|
|
29
|
+
return (await this._zipCache.get(`xl/worksheets/${this._targetFileName}`));
|
|
24
30
|
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
async _getWsData() {
|
|
28
|
-
return await this._zipCache.get(`xl/worksheets/${this._targetFileName}`);
|
|
29
|
-
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
ExcelRow
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=excel-row.js.map
|
|
32
|
+
//# sourceMappingURL=excel-row.js.map
|
package/dist/excel-row.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/excel-row.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO;AACP,SAAS,iBAAiB;AAKnB,MAAM,SAAS;AAAA,EAGpB,YACmB,WACA,iBACA,IACjB;AAHiB;AACA;AACA;AAAA,EAChB;AAAA,EANc,WAAW,oBAAI,IAAuB;AAAA;AAAA,EASvD,KAAK,GAAsB;AACzB,WAAO,KAAK,SAAS;AAAA,MACnB;AAAA,MACA,IAAI,UAAU,KAAK,WAAW,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,WAAiC;AACrC,UAAM,SAAsB,CAAC;AAC7B,UAAM,SAAS,MAAM,KAAK,WAAW;AACrC,UAAM,QAAQ,OAAO;AAErB,aAAS,IAAI,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,KAAK;AAC3C,aAAO,CAAC,IAAI,KAAK,KAAK,CAAC;AAAA,IACzB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,aAAyC;AACrD,WAAQ,MAAM,KAAK,UAAU,IAAI,iBAAiB,KAAK,eAAe,EAAE;AAAA,EAC1E;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"excel-row.js","sourceRoot":"","sources":["..\\src\\excel-row.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,8CAA8C;AAC9C,MAAM,OAAO,QAAQ;IAIA;IACA;IACA;IALF,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEzD,YACmB,SAAmB,EACnB,eAAuB,EACvB,EAAU;QAFV,cAAS,GAAT,SAAS,CAAU;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,OAAE,GAAF,EAAE,CAAQ;IAC1B,CAAC;IAEJ,6BAA6B;IAC7B,IAAI,CAAC,CAAS;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,CAAC,EACD,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAsB,CAAC;IAClG,CAAC;CACF"}
|
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 워크북 처리 클래스
|
|
6
6
|
*
|
|
7
7
|
* @remarks
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* 이 클래스는 내부적으로 ZIP 리소스를 관리한다.
|
|
9
|
+
* 사용 후 반드시 리소스를 해제해야 한다.
|
|
10
10
|
*
|
|
11
|
-
* ##
|
|
11
|
+
* ## 비동기 설계
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
* -
|
|
15
|
-
* -
|
|
16
|
-
* -
|
|
13
|
+
* 대용량 Excel 파일의 메모리 효율을 위해 Lazy Loading 아키텍처를 채택:
|
|
14
|
+
* - ZIP 내부의 XML은 접근 시점에만 읽고 파싱함
|
|
15
|
+
* - SharedStrings, Styles 등 대용량 XML은 필요할 때만 로드함
|
|
16
|
+
* - 극단적인 경우에도 메모리 효율적 (예: 1TB SharedStrings가 있는 파일에서 숫자 셀 하나만 읽기)
|
|
17
17
|
*
|
|
18
18
|
* @example
|
|
19
19
|
* ```typescript
|
|
20
|
-
* //
|
|
20
|
+
* // await using 사용 (권장)
|
|
21
21
|
* await using wb = new ExcelWorkbook(bytes);
|
|
22
22
|
* const ws = await wb.getWorksheet(0);
|
|
23
|
-
* // ...
|
|
24
|
-
* //
|
|
23
|
+
* // ... 작업 수행
|
|
24
|
+
* // 스코프 종료 시 리소스 자동 해제
|
|
25
25
|
*
|
|
26
|
-
* //
|
|
26
|
+
* // 또는 try-finally 사용
|
|
27
27
|
* const wb = new ExcelWorkbook(bytes);
|
|
28
28
|
* try {
|
|
29
29
|
* const ws = await wb.getWorksheet(0);
|
|
30
|
-
* // ...
|
|
30
|
+
* // ... 작업 수행
|
|
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 기존 Excel 파일 데이터 (Blob 또는 Uint8Array). 생략하면 새 워크북을 생성한다.
|
|
42
42
|
*/
|
|
43
43
|
constructor(arg?: Blob | Bytes);
|
|
44
44
|
private _ensureNotClosed;
|
|
45
|
-
/**
|
|
45
|
+
/** 워크북의 모든 워크시트 이름 반환 */
|
|
46
46
|
getWorksheetNames(): Promise<string[]>;
|
|
47
|
-
/**
|
|
47
|
+
/** 새 워크시트를 생성하여 반환 */
|
|
48
48
|
addWorksheet(name: string): Promise<ExcelWorksheet>;
|
|
49
|
-
/**
|
|
49
|
+
/** 이름 또는 인덱스(0 기반)로 워크시트 조회 */
|
|
50
50
|
getWorksheet(nameOrIndex: string | number): Promise<ExcelWorksheet>;
|
|
51
|
-
/**
|
|
51
|
+
/** 워크북을 바이트 배열로 내보내기 */
|
|
52
52
|
toBytes(): Promise<Bytes>;
|
|
53
|
-
/**
|
|
53
|
+
/** 워크북을 Blob으로 내보내기 */
|
|
54
54
|
toBlob(): Promise<Blob>;
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* 워크북 리소스 해제
|
|
57
57
|
*
|
|
58
58
|
* @remarks
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* ZIP 리더와 내부 캐시를 정리한다.
|
|
60
|
+
* 이 호출 이후에는 워크북 인스턴스를 사용할 수 없다.
|
|
61
|
+
* 이미 닫힌 워크북에 대해 호출해도 안전하다 (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,yBAAyB;IACnB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM5C,sBAAsB;IAChB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgCzD,+BAA+B;IACzB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyCzE,wBAAwB;IAClB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;IAK/B,uBAAuB;IACjB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;;;;;;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
|
@@ -4,136 +4,162 @@ import { ExcelXmlContentType } from "./xml/excel-xml-content-type.js";
|
|
|
4
4
|
import { ExcelXmlRelationship } from "./xml/excel-xml-relationship.js";
|
|
5
5
|
import { ExcelXmlWorkbook as ExcelXmlWorkbookClass } from "./xml/excel-xml-workbook.js";
|
|
6
6
|
import { ExcelXmlWorksheet as ExcelXmlWorksheetClass } from "./xml/excel-xml-worksheet.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Excel 워크북 처리 클래스
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* 이 클래스는 내부적으로 ZIP 리소스를 관리한다.
|
|
12
|
+
* 사용 후 반드시 리소스를 해제해야 한다.
|
|
13
|
+
*
|
|
14
|
+
* ## 비동기 설계
|
|
15
|
+
*
|
|
16
|
+
* 대용량 Excel 파일의 메모리 효율을 위해 Lazy Loading 아키텍처를 채택:
|
|
17
|
+
* - ZIP 내부의 XML은 접근 시점에만 읽고 파싱함
|
|
18
|
+
* - SharedStrings, Styles 등 대용량 XML은 필요할 때만 로드함
|
|
19
|
+
* - 극단적인 경우에도 메모리 효율적 (예: 1TB SharedStrings가 있는 파일에서 숫자 셀 하나만 읽기)
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // await using 사용 (권장)
|
|
24
|
+
* await using wb = new ExcelWorkbook(bytes);
|
|
25
|
+
* const ws = await wb.getWorksheet(0);
|
|
26
|
+
* // ... 작업 수행
|
|
27
|
+
* // 스코프 종료 시 리소스 자동 해제
|
|
28
|
+
*
|
|
29
|
+
* // 또는 try-finally 사용
|
|
30
|
+
* const wb = new ExcelWorkbook(bytes);
|
|
31
|
+
* try {
|
|
32
|
+
* const ws = await wb.getWorksheet(0);
|
|
33
|
+
* // ... 작업 수행
|
|
34
|
+
* } finally {
|
|
35
|
+
* await wb.close();
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export class ExcelWorkbook {
|
|
40
|
+
zipCache;
|
|
41
|
+
_wsMap = new Map();
|
|
42
|
+
_isClosed = false;
|
|
43
|
+
/**
|
|
44
|
+
* @param arg 기존 Excel 파일 데이터 (Blob 또는 Uint8Array). 생략하면 새 워크북을 생성한다.
|
|
45
|
+
*/
|
|
46
|
+
constructor(arg) {
|
|
47
|
+
if (arg != null) {
|
|
48
|
+
this.zipCache = new ZipCache(arg);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.zipCache = new ZipCache();
|
|
52
|
+
// 전역 ContentTypes
|
|
53
|
+
const typeXml = new ExcelXmlContentType();
|
|
54
|
+
this.zipCache.set("[Content_Types].xml", typeXml);
|
|
55
|
+
// 전역 Rels
|
|
56
|
+
this.zipCache.set("_rels/.rels", new ExcelXmlRelationship().add("xl/workbook.xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"));
|
|
57
|
+
// 워크북
|
|
58
|
+
const wbXml = new ExcelXmlWorkbookClass();
|
|
59
|
+
this.zipCache.set("xl/workbook.xml", wbXml);
|
|
60
|
+
// 워크북 Rels
|
|
61
|
+
const wbRelXml = new ExcelXmlRelationship();
|
|
62
|
+
this.zipCache.set("xl/_rels/workbook.xml.rels", wbRelXml);
|
|
63
|
+
}
|
|
32
64
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
65
|
+
//#region Worksheet Methods
|
|
66
|
+
_ensureNotClosed() {
|
|
67
|
+
if (this._isClosed) {
|
|
68
|
+
throw new Error("ExcelWorkbook이 이미 닫혔습니다. close() 호출 후에는 사용할 수 없습니다.");
|
|
69
|
+
}
|
|
38
70
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return wbData.sheetNames;
|
|
45
|
-
}
|
|
46
|
-
/** Create and return a new worksheet */
|
|
47
|
-
async addWorksheet(name) {
|
|
48
|
-
this._ensureNotClosed();
|
|
49
|
-
const wbXml = await this.zipCache.get("xl/workbook.xml");
|
|
50
|
-
const newWsRelId = wbXml.addWorksheet(name).lastWsRelId;
|
|
51
|
-
const typeXml = await this.zipCache.get("[Content_Types].xml");
|
|
52
|
-
typeXml.add(
|
|
53
|
-
`/xl/worksheets/sheet${newWsRelId}.xml`,
|
|
54
|
-
"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
|
|
55
|
-
);
|
|
56
|
-
const wbRelXml = await this.zipCache.get(
|
|
57
|
-
"xl/_rels/workbook.xml.rels"
|
|
58
|
-
);
|
|
59
|
-
wbRelXml.insert(
|
|
60
|
-
newWsRelId,
|
|
61
|
-
`worksheets/sheet${newWsRelId}.xml`,
|
|
62
|
-
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"
|
|
63
|
-
);
|
|
64
|
-
const wsXml = new ExcelXmlWorksheetClass();
|
|
65
|
-
this.zipCache.set(`xl/worksheets/sheet${newWsRelId}.xml`, wsXml);
|
|
66
|
-
const ws = new ExcelWorksheet(this.zipCache, newWsRelId, `sheet${newWsRelId}.xml`);
|
|
67
|
-
this._wsMap.set(newWsRelId, ws);
|
|
68
|
-
return ws;
|
|
69
|
-
}
|
|
70
|
-
/** Look up a worksheet by name or index (0-based) */
|
|
71
|
-
async getWorksheet(nameOrIndex) {
|
|
72
|
-
this._ensureNotClosed();
|
|
73
|
-
const wbData = await this.zipCache.get("xl/workbook.xml");
|
|
74
|
-
const wsId = typeof nameOrIndex === "string" ? wbData.getWsRelIdByName(nameOrIndex) : wbData.getWsRelIdByIndex(nameOrIndex);
|
|
75
|
-
if (wsId === void 0) {
|
|
76
|
-
if (typeof nameOrIndex === "string") {
|
|
77
|
-
throw new Error(`Cannot find sheet with name '${nameOrIndex}'.`);
|
|
78
|
-
} else {
|
|
79
|
-
throw new Error(`Cannot find sheet at index '${nameOrIndex}'.`);
|
|
80
|
-
}
|
|
71
|
+
/** 워크북의 모든 워크시트 이름 반환 */
|
|
72
|
+
async getWorksheetNames() {
|
|
73
|
+
this._ensureNotClosed();
|
|
74
|
+
const wbData = (await this.zipCache.get("xl/workbook.xml"));
|
|
75
|
+
return wbData.sheetNames;
|
|
81
76
|
}
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
/** 새 워크시트를 생성하여 반환 */
|
|
78
|
+
async addWorksheet(name) {
|
|
79
|
+
this._ensureNotClosed();
|
|
80
|
+
// 워크북
|
|
81
|
+
const wbXml = (await this.zipCache.get("xl/workbook.xml"));
|
|
82
|
+
const newWsRelId = wbXml.addWorksheet(name).lastWsRelId;
|
|
83
|
+
// Content Types 갱신
|
|
84
|
+
const typeXml = (await this.zipCache.get("[Content_Types].xml"));
|
|
85
|
+
typeXml.add(`/xl/worksheets/sheet${newWsRelId}.xml`, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml");
|
|
86
|
+
// 워크북 Rels 갱신
|
|
87
|
+
const wbRelXml = (await this.zipCache.get("xl/_rels/workbook.xml.rels"));
|
|
88
|
+
wbRelXml.insert(newWsRelId, `worksheets/sheet${newWsRelId}.xml`, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet");
|
|
89
|
+
// 워크시트
|
|
90
|
+
const wsXml = new ExcelXmlWorksheetClass();
|
|
91
|
+
this.zipCache.set(`xl/worksheets/sheet${newWsRelId}.xml`, wsXml);
|
|
92
|
+
const ws = new ExcelWorksheet(this.zipCache, newWsRelId, `sheet${newWsRelId}.xml`);
|
|
93
|
+
this._wsMap.set(newWsRelId, ws);
|
|
94
|
+
return ws;
|
|
84
95
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
96
|
+
/** 이름 또는 인덱스(0 기반)로 워크시트 조회 */
|
|
97
|
+
async getWorksheet(nameOrIndex) {
|
|
98
|
+
this._ensureNotClosed();
|
|
99
|
+
const wbData = (await this.zipCache.get("xl/workbook.xml"));
|
|
100
|
+
const wsId = typeof nameOrIndex === "string"
|
|
101
|
+
? wbData.getWsRelIdByName(nameOrIndex)
|
|
102
|
+
: wbData.getWsRelIdByIndex(nameOrIndex);
|
|
103
|
+
if (wsId === undefined) {
|
|
104
|
+
if (typeof nameOrIndex === "string") {
|
|
105
|
+
throw new Error(`이름이 '${nameOrIndex}'인 시트를 찾을 수 없습니다.`);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
throw new Error(`인덱스 '${nameOrIndex}'에 해당하는 시트를 찾을 수 없습니다.`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (this._wsMap.has(wsId)) {
|
|
112
|
+
return this._wsMap.get(wsId);
|
|
113
|
+
}
|
|
114
|
+
const relData = (await this.zipCache.get("xl/_rels/workbook.xml.rels"));
|
|
115
|
+
const targetFilePath = relData.getTargetByRelId(wsId);
|
|
116
|
+
if (targetFilePath == null) {
|
|
117
|
+
throw new Error(`시트 관계 정보를 찾을 수 없습니다: rId${wsId}`);
|
|
118
|
+
}
|
|
119
|
+
// path.basename 대신 직접 파일명 추출 (브라우저 호환성)
|
|
120
|
+
const fileName = targetFilePath.split("/").pop();
|
|
121
|
+
if (fileName == null) {
|
|
122
|
+
throw new Error(`시트 파일명을 추출할 수 없습니다: ${targetFilePath}`);
|
|
123
|
+
}
|
|
124
|
+
const ws = new ExcelWorksheet(this.zipCache, wsId, fileName);
|
|
125
|
+
this._wsMap.set(wsId, ws);
|
|
126
|
+
return ws;
|
|
89
127
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region Export Methods
|
|
130
|
+
/** 워크북을 바이트 배열로 내보내기 */
|
|
131
|
+
async toBytes() {
|
|
132
|
+
this._ensureNotClosed();
|
|
133
|
+
return this.zipCache.toBytes();
|
|
93
134
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
*/
|
|
123
|
-
async close() {
|
|
124
|
-
if (this._isClosed) {
|
|
125
|
-
return;
|
|
135
|
+
/** 워크북을 Blob으로 내보내기 */
|
|
136
|
+
async toBlob() {
|
|
137
|
+
this._ensureNotClosed();
|
|
138
|
+
const bytes = await this.zipCache.toBytes();
|
|
139
|
+
return new Blob([new Uint8Array(bytes)], {
|
|
140
|
+
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//#endregion
|
|
144
|
+
//#region Lifecycle Methods
|
|
145
|
+
/**
|
|
146
|
+
* 워크북 리소스 해제
|
|
147
|
+
*
|
|
148
|
+
* @remarks
|
|
149
|
+
* ZIP 리더와 내부 캐시를 정리한다.
|
|
150
|
+
* 이 호출 이후에는 워크북 인스턴스를 사용할 수 없다.
|
|
151
|
+
* 이미 닫힌 워크북에 대해 호출해도 안전하다 (no-op).
|
|
152
|
+
*/
|
|
153
|
+
async close() {
|
|
154
|
+
if (this._isClosed) {
|
|
155
|
+
return; // 이미 닫힌 경우 무시
|
|
156
|
+
}
|
|
157
|
+
this._isClosed = true;
|
|
158
|
+
this._wsMap.clear();
|
|
159
|
+
await this.zipCache.close();
|
|
160
|
+
}
|
|
161
|
+
async [Symbol.asyncDispose]() {
|
|
162
|
+
await this.close();
|
|
126
163
|
}
|
|
127
|
-
this._isClosed = true;
|
|
128
|
-
this._wsMap.clear();
|
|
129
|
-
await this.zipCache.close();
|
|
130
|
-
}
|
|
131
|
-
async [Symbol.asyncDispose]() {
|
|
132
|
-
await this.close();
|
|
133
|
-
}
|
|
134
|
-
//#endregion
|
|
135
164
|
}
|
|
136
|
-
|
|
137
|
-
ExcelWorkbook
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=excel-workbook.js.map
|
|
165
|
+
//# sourceMappingURL=excel-workbook.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/excel-workbook.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"excel-workbook.js","sourceRoot":"","sources":["..\\src\\excel-workbook.ts"],"names":[],"mappings":"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"}
|