@simplysm/excel 13.0.0-beta.7 → 13.0.2
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 +15 -0
- package/dist/excel-cell.d.ts.map +1 -0
- package/dist/excel-cell.js +3 -3
- package/dist/excel-cell.js.map +0 -1
- package/dist/excel-col.d.ts.map +1 -0
- package/dist/excel-col.js +1 -1
- package/dist/excel-col.js.map +0 -1
- package/dist/excel-row.d.ts.map +1 -0
- package/dist/excel-row.js +1 -1
- package/dist/excel-row.js.map +0 -1
- package/dist/excel-workbook.d.ts.map +1 -0
- package/dist/excel-workbook.js +6 -6
- package/dist/excel-workbook.js.map +0 -1
- package/dist/excel-worksheet.d.ts.map +1 -0
- package/dist/excel-worksheet.js +4 -4
- package/dist/excel-worksheet.js.map +0 -1
- package/dist/excel-wrapper.d.ts.map +1 -0
- package/dist/excel-wrapper.js +1 -1
- package/dist/excel-wrapper.js.map +0 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -8
- package/dist/index.js.map +0 -1
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +0 -1
- package/dist/utils/excel-utils.d.ts.map +1 -0
- package/dist/utils/excel-utils.js.map +0 -1
- package/dist/utils/zip-cache.d.ts.map +1 -0
- package/dist/utils/zip-cache.js +8 -8
- package/dist/utils/zip-cache.js.map +0 -1
- package/dist/xml/excel-xml-content-type.d.ts.map +1 -0
- package/dist/xml/excel-xml-content-type.js.map +0 -1
- package/dist/xml/excel-xml-drawing.d.ts.map +1 -0
- package/dist/xml/excel-xml-drawing.js.map +0 -1
- package/dist/xml/excel-xml-relationship.d.ts.map +1 -0
- package/dist/xml/excel-xml-relationship.js.map +0 -1
- package/dist/xml/excel-xml-shared-string.d.ts.map +1 -0
- package/dist/xml/excel-xml-shared-string.js.map +0 -1
- package/dist/xml/excel-xml-style.d.ts.map +1 -0
- package/dist/xml/excel-xml-style.js.map +0 -1
- package/dist/xml/excel-xml-unknown.d.ts.map +1 -0
- package/dist/xml/excel-xml-unknown.js.map +0 -1
- package/dist/xml/excel-xml-workbook.d.ts.map +1 -0
- package/dist/xml/excel-xml-workbook.js.map +0 -1
- package/dist/xml/excel-xml-worksheet.d.ts.map +1 -0
- package/dist/xml/excel-xml-worksheet.js +1 -1
- package/dist/xml/excel-xml-worksheet.js.map +0 -1
- package/package.json +6 -5
- package/src/excel-cell.ts +326 -0
- package/src/excel-col.ts +43 -0
- package/src/excel-row.ts +37 -0
- package/src/excel-workbook.ts +206 -0
- package/src/excel-worksheet.ts +380 -0
- package/src/excel-wrapper.ts +219 -0
- package/src/index.ts +13 -0
- package/src/types.ts +396 -0
- package/src/utils/excel-utils.ts +201 -0
- package/src/utils/zip-cache.ts +103 -0
- package/src/xml/excel-xml-content-type.ts +64 -0
- package/src/xml/excel-xml-drawing.ts +87 -0
- package/src/xml/excel-xml-relationship.ts +86 -0
- package/src/xml/excel-xml-shared-string.ts +80 -0
- package/src/xml/excel-xml-style.ts +393 -0
- package/src/xml/excel-xml-unknown.ts +11 -0
- package/src/xml/excel-xml-workbook.ts +112 -0
- package/src/xml/excel-xml-worksheet.ts +544 -0
- package/dist/core-common/src/common.types.d.ts +0 -74
- package/dist/core-common/src/common.types.d.ts.map +0 -1
- package/dist/core-common/src/env.d.ts +0 -6
- package/dist/core-common/src/env.d.ts.map +0 -1
- package/dist/core-common/src/errors/argument-error.d.ts +0 -25
- package/dist/core-common/src/errors/argument-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/not-implemented-error.d.ts +0 -29
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/sd-error.d.ts +0 -27
- package/dist/core-common/src/errors/sd-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/timeout-error.d.ts +0 -31
- package/dist/core-common/src/errors/timeout-error.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.d.ts +0 -15
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +0 -19
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +0 -215
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +0 -1
- package/dist/core-common/src/extensions/map-ext.d.ts +0 -57
- package/dist/core-common/src/extensions/map-ext.d.ts.map +0 -1
- package/dist/core-common/src/extensions/set-ext.d.ts +0 -36
- package/dist/core-common/src/extensions/set-ext.d.ts.map +0 -1
- package/dist/core-common/src/features/debounce-queue.d.ts +0 -53
- package/dist/core-common/src/features/debounce-queue.d.ts.map +0 -1
- package/dist/core-common/src/features/event-emitter.d.ts +0 -66
- package/dist/core-common/src/features/event-emitter.d.ts.map +0 -1
- package/dist/core-common/src/features/serial-queue.d.ts +0 -47
- package/dist/core-common/src/features/serial-queue.d.ts.map +0 -1
- package/dist/core-common/src/index.d.ts +0 -32
- package/dist/core-common/src/index.d.ts.map +0 -1
- package/dist/core-common/src/types/date-only.d.ts +0 -152
- package/dist/core-common/src/types/date-only.d.ts.map +0 -1
- package/dist/core-common/src/types/date-time.d.ts +0 -96
- package/dist/core-common/src/types/date-time.d.ts.map +0 -1
- package/dist/core-common/src/types/lazy-gc-map.d.ts +0 -80
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +0 -1
- package/dist/core-common/src/types/time.d.ts +0 -68
- package/dist/core-common/src/types/time.d.ts.map +0 -1
- package/dist/core-common/src/types/uuid.d.ts +0 -35
- package/dist/core-common/src/types/uuid.d.ts.map +0 -1
- package/dist/core-common/src/utils/bytes.d.ts +0 -51
- package/dist/core-common/src/utils/bytes.d.ts.map +0 -1
- package/dist/core-common/src/utils/date-format.d.ts +0 -90
- package/dist/core-common/src/utils/date-format.d.ts.map +0 -1
- package/dist/core-common/src/utils/json.d.ts +0 -34
- package/dist/core-common/src/utils/json.d.ts.map +0 -1
- package/dist/core-common/src/utils/num.d.ts +0 -60
- package/dist/core-common/src/utils/num.d.ts.map +0 -1
- package/dist/core-common/src/utils/obj.d.ts +0 -258
- package/dist/core-common/src/utils/obj.d.ts.map +0 -1
- package/dist/core-common/src/utils/path.d.ts +0 -23
- package/dist/core-common/src/utils/path.d.ts.map +0 -1
- package/dist/core-common/src/utils/primitive.d.ts +0 -18
- package/dist/core-common/src/utils/primitive.d.ts.map +0 -1
- package/dist/core-common/src/utils/str.d.ts +0 -103
- package/dist/core-common/src/utils/str.d.ts.map +0 -1
- package/dist/core-common/src/utils/template-strings.d.ts +0 -84
- package/dist/core-common/src/utils/template-strings.d.ts.map +0 -1
- package/dist/core-common/src/utils/transferable.d.ts +0 -47
- package/dist/core-common/src/utils/transferable.d.ts.map +0 -1
- package/dist/core-common/src/utils/wait.d.ts +0 -19
- package/dist/core-common/src/utils/wait.d.ts.map +0 -1
- package/dist/core-common/src/utils/xml.d.ts +0 -36
- package/dist/core-common/src/utils/xml.d.ts.map +0 -1
- package/dist/core-common/src/zip/sd-zip.d.ts +0 -80
- package/dist/core-common/src/zip/sd-zip.d.ts.map +0 -1
- package/dist/excel/src/excel-cell.d.ts.map +0 -1
- package/dist/excel/src/excel-col.d.ts.map +0 -1
- package/dist/excel/src/excel-row.d.ts.map +0 -1
- package/dist/excel/src/excel-workbook.d.ts.map +0 -1
- package/dist/excel/src/excel-worksheet.d.ts.map +0 -1
- package/dist/excel/src/excel-wrapper.d.ts.map +0 -1
- package/dist/excel/src/index.d.ts.map +0 -1
- package/dist/excel/src/types.d.ts.map +0 -1
- package/dist/excel/src/utils/excel-utils.d.ts.map +0 -1
- package/dist/excel/src/utils/zip-cache.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-content-type.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-drawing.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-relationship.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-shared-string.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-style.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-unknown.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-workbook.d.ts.map +0 -1
- package/dist/excel/src/xml/excel-xml-worksheet.d.ts.map +0 -1
- /package/dist/{excel/src/excel-cell.d.ts → excel-cell.d.ts} +0 -0
- /package/dist/{excel/src/excel-col.d.ts → excel-col.d.ts} +0 -0
- /package/dist/{excel/src/excel-row.d.ts → excel-row.d.ts} +0 -0
- /package/dist/{excel/src/excel-workbook.d.ts → excel-workbook.d.ts} +0 -0
- /package/dist/{excel/src/excel-worksheet.d.ts → excel-worksheet.d.ts} +0 -0
- /package/dist/{excel/src/excel-wrapper.d.ts → excel-wrapper.d.ts} +0 -0
- /package/dist/{excel/src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{excel/src/types.d.ts → types.d.ts} +0 -0
- /package/dist/{excel/src/utils → utils}/excel-utils.d.ts +0 -0
- /package/dist/{excel/src/utils → utils}/zip-cache.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-content-type.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-drawing.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-relationship.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-shared-string.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-style.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-unknown.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-workbook.d.ts +0 -0
- /package/dist/{excel/src/xml → xml}/excel-xml-worksheet.d.ts +0 -0
package/README.md
CHANGED
|
@@ -381,6 +381,21 @@ Behavior of the `read()` method:
|
|
|
381
381
|
| `convertNumFmtCodeToName(code)` | Format code | `ExcelNumberFormat` | Convert format code to name |
|
|
382
382
|
| `convertNumFmtNameToId(name)` | `ExcelNumberFormat` | Format ID | Convert format name to ID |
|
|
383
383
|
|
|
384
|
+
## ExcelRow API
|
|
385
|
+
|
|
386
|
+
| Method | Return Type | Description |
|
|
387
|
+
|--------|-----------|------|
|
|
388
|
+
| `cell(c)` | `ExcelCell` | Get cell at column index (0-based) |
|
|
389
|
+
| `getCells()` | `Promise<ExcelCell[]>` | Get all cells in the row |
|
|
390
|
+
|
|
391
|
+
## ExcelCol API
|
|
392
|
+
|
|
393
|
+
| Method | Return Type | Description |
|
|
394
|
+
|--------|-----------|------|
|
|
395
|
+
| `cell(r)` | `ExcelCell` | Get cell at row index (0-based) |
|
|
396
|
+
| `getCells()` | `Promise<ExcelCell[]>` | Get all cells in the column |
|
|
397
|
+
| `setWidth(size)` | `Promise<void>` | Set column width |
|
|
398
|
+
|
|
384
399
|
## ExcelCell API
|
|
385
400
|
|
|
386
401
|
| Method | Return Type | Description |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-cell.d.ts","sourceRoot":"","sources":["../src/excel-cell.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMpF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAS;IAKlB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAPrB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;gBAGd,SAAS,EAAE,QAAQ,EACnB,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM;IAO7B,kCAAkC;IAC5B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD,eAAe;IACT,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK/C,+BAA+B;IACzB,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmChD,aAAa;IACP,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAkFvC;;;;;;;OAOG;IACG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD,mBAAmB;IACb,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK/C,mBAAmB;IACb,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;;;;;;OAQG;IACG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAiCxC,WAAW;YAKX,UAAU;YAIV,iBAAiB;YAYjB,YAAY;YAIZ,UAAU;YAIV,aAAa;YAIb,aAAa;YAIb,kBAAkB;YAqBlB,qBAAqB;CAgBpC"}
|
package/dist/excel-cell.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DateOnly, DateTime, numParseFloat, numParseInt, strIsNullOrEmpty, Time } from "@simplysm/core-common";
|
|
2
|
-
import { ExcelXmlSharedString as ExcelXmlSharedStringClass } from "./xml/excel-xml-shared-string";
|
|
3
|
-
import { ExcelXmlStyle as ExcelXmlStyleClass } from "./xml/excel-xml-style";
|
|
4
|
-
import { ExcelUtils } from "./utils/excel-utils";
|
|
2
|
+
import { ExcelXmlSharedString as ExcelXmlSharedStringClass } from "./xml/excel-xml-shared-string.js";
|
|
3
|
+
import { ExcelXmlStyle as ExcelXmlStyleClass } from "./xml/excel-xml-style.js";
|
|
4
|
+
import { ExcelUtils } from "./utils/excel-utils.js";
|
|
5
5
|
class ExcelCell {
|
|
6
6
|
constructor(_zipCache, _targetFileName, _r, _c) {
|
|
7
7
|
this._zipCache = _zipCache;
|
package/dist/excel-cell.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-cell.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ExcelXmlWorksheet } from \"./xml/excel-xml-worksheet\";\nimport type { ExcelXmlContentType } from \"./xml/excel-xml-content-type\";\nimport type { ExcelXmlRelationship } from \"./xml/excel-xml-relationship\";\nimport type { ExcelXmlStyle, ExcelStyle } from \"./xml/excel-xml-style\";\nimport type { ExcelXmlSharedString } from \"./xml/excel-xml-shared-string\";\nimport type { ZipCache } from \"./utils/zip-cache\";\nimport type { ExcelAddressPoint, ExcelStyleOptions, ExcelValueType } from \"./types\";\nimport { DateOnly, DateTime, numParseFloat, numParseInt, strIsNullOrEmpty, Time } from \"@simplysm/core-common\";\nimport { ExcelXmlSharedString as ExcelXmlSharedStringClass } from \"./xml/excel-xml-shared-string\";\nimport { ExcelXmlStyle as ExcelXmlStyleClass } from \"./xml/excel-xml-style\";\nimport { ExcelUtils } from \"./utils/excel-utils\";\n\n/**\n * Excel \uC140\uC744 \uB098\uD0C0\uB0B4\uB294 \uD074\uB798\uC2A4.\n * \uAC12 \uC77D\uAE30/\uC4F0\uAE30, \uC218\uC2DD \uC124\uC815, \uC2A4\uD0C0\uC77C \uC124\uC815, \uC140 \uBCD1\uD569 \uB4F1\uC758 \uAE30\uB2A5\uC744 \uC81C\uACF5\uD55C\uB2E4.\n *\n * @remarks\n * ## \uBE44\uB3D9\uAE30 \uBA54\uC11C\uB4DC \uC124\uACC4\n *\n * `getVal()`, `setVal()` \uB4F1 \uBAA8\uB4E0 \uC140 \uBA54\uC11C\uB4DC\uAC00 `async`\uC778 \uC774\uC720:\n * - \uC140 \uD0C0\uC785\uC5D0 \uB530\uB77C \uD544\uC694\uD55C XML\uB9CC \uC120\uD0DD\uC801\uC73C\uB85C \uB85C\uB4DC\uD55C\uB2E4\n * - \uBB38\uC790\uC5F4 \uC140: SharedStrings.xml \uB85C\uB4DC\n * - \uC22B\uC790 \uC140: SharedStrings \uB85C\uB4DC \uC548\uD568\n * - \uC2A4\uD0C0\uC77C\uC774 \uC788\uB294 \uC140: Styles.xml \uB85C\uB4DC\n *\n * \uC5B4\uB5A4 \uC140\uC744 \uC77D\uC744\uC9C0 \uBBF8\uB9AC \uC54C \uC218 \uC5C6\uAE30 \uB54C\uBB38\uC5D0 \uB3D9\uAE30 \uAD6C\uC870\uB85C\uB294 \uAD6C\uD604\uD560 \uC218 \uC5C6\uB2E4.\n * \uB3D9\uAE30 \uAD6C\uC870\uB85C \uB9CC\uB4E4\uB824\uBA74 \uBAA8\uB4E0 XML\uC744 \uBBF8\uB9AC \uB85C\uB4DC\uD574\uC57C \uD558\uBBC0\uB85C \uB300\uC6A9\uB7C9 \uD30C\uC77C\uC5D0\uC11C \uBA54\uBAA8\uB9AC \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD55C\uB2E4.\n */\nexport class ExcelCell {\n /** \uC140 \uC8FC\uC18C (0-based \uD589/\uC5F4 \uC778\uB371\uC2A4) */\n readonly addr: ExcelAddressPoint;\n\n constructor(\n private readonly _zipCache: ZipCache,\n private readonly _targetFileName: string,\n private readonly _r: number,\n private readonly _c: number,\n ) {\n this.addr = { r: this._r, c: this._c };\n }\n\n //#region Value Methods\n\n /** \uC140\uC5D0 \uC218\uC2DD \uC124\uC815 (undefined: \uC218\uC2DD \uC0AD\uC81C) */\n async setFormula(val: string | undefined): Promise<void> {\n if (val === undefined) {\n await this._deleteCell(this.addr);\n } else {\n const wsData = await this._getWsData();\n wsData.setCellType(this.addr, \"str\");\n wsData.setCellVal(this.addr, undefined);\n wsData.setCellFormula(this.addr, val);\n }\n }\n\n /** \uC140\uC758 \uC218\uC2DD \uBC18\uD658 */\n async getFormula(): Promise<string | undefined> {\n const wsData = await this._getWsData();\n return wsData.getCellFormula(this.addr);\n }\n\n /** \uC140 \uAC12 \uC124\uC815 (undefined: \uC140 \uC0AD\uC81C) */\n async setVal(val: ExcelValueType): Promise<void> {\n if (val === undefined) {\n await this._deleteCell(this.addr);\n } else if (typeof val === \"string\") {\n const wsData = await this._getWsData();\n const ssData = await this._getOrCreateSsData();\n const ssId = ssData.getIdByString(val);\n if (ssId !== undefined) {\n wsData.setCellType(this.addr, \"s\");\n wsData.setCellVal(this.addr, ssId.toString());\n } else {\n const newSsId = ssData.add(val);\n wsData.setCellType(this.addr, \"s\");\n wsData.setCellVal(this.addr, newSsId.toString());\n }\n } else if (typeof val === \"boolean\") {\n const wsData = await this._getWsData();\n wsData.setCellType(this.addr, \"b\");\n wsData.setCellVal(this.addr, val ? \"1\" : \"0\");\n } else if (typeof val === \"number\") {\n const wsData = await this._getWsData();\n wsData.setCellType(this.addr, undefined);\n wsData.setCellVal(this.addr, val.toString());\n } else if (val instanceof DateOnly || val instanceof DateTime || val instanceof Time) {\n const wsData = await this._getWsData();\n wsData.setCellType(this.addr, undefined);\n wsData.setCellVal(this.addr, ExcelUtils.convertTimeTickToNumber(val.tick).toString());\n\n const numFmtName = val instanceof DateOnly ? \"DateOnly\" : val instanceof DateTime ? \"DateTime\" : \"Time\";\n await this._setStyleInternal({ numFmtId: ExcelUtils.convertNumFmtNameToId(numFmtName).toString() });\n } else {\n throw new Error(`[${ExcelUtils.stringifyAddr(this.addr)}] \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uD0C0\uC785\uC785\uB2C8\uB2E4: ${typeof val}`);\n }\n }\n\n /** \uC140 \uAC12 \uBC18\uD658 */\n async getVal(): Promise<ExcelValueType> {\n const wsData = await this._getWsData();\n const cellVal = wsData.getCellVal(this.addr);\n if (cellVal === undefined || strIsNullOrEmpty(cellVal)) {\n return undefined;\n }\n\n const cellType = wsData.getCellType(this.addr);\n if (cellType === \"s\") {\n const ssData = await this._getOrCreateSsData();\n const ssId = numParseInt(cellVal);\n if (ssId == null) {\n throw new Error(`[${ExcelUtils.stringifyAddr(this.addr)}] SharedString ID \uD30C\uC2F1 \uC2E4\uD328: ${cellVal}`);\n }\n return ssData.getStringById(ssId);\n } else if (cellType === \"str\") {\n return cellVal;\n } else if (cellType === \"inlineStr\") {\n return cellVal;\n } else if (cellType === \"b\") {\n return cellVal === \"1\";\n } else if (cellType === \"n\") {\n return parseFloat(cellVal);\n } else if (cellType === \"e\") {\n throw new Error(\n `[${ExcelUtils.stringifyAddr(this.addr)}] \uC140 \uD0C0\uC785 \uBD84\uC11D \uC2E4\uD328: \uC140\uC5D0 \uC5D0\uB7EC \uAC12\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4 (${cellVal})`,\n );\n } else {\n // cellType === undefined: \uC22B\uC790 \uB610\uB294 \uB0A0\uC9DC/\uC2DC\uAC04 \uD0C0\uC785\n const cellStyleId = wsData.getCellStyleId(this.addr);\n if (cellStyleId === undefined) {\n return parseFloat(cellVal);\n }\n\n const styleData = await this._getStyleData();\n if (styleData == null) {\n return parseFloat(cellVal);\n }\n\n const numFmtId = styleData.get(cellStyleId).numFmtId;\n if (numFmtId === undefined) {\n return parseFloat(cellVal);\n }\n\n const numFmtCode = styleData.getNumFmtCode(numFmtId);\n let numFmt;\n if (numFmtCode !== undefined) {\n numFmt = ExcelUtils.convertNumFmtCodeToName(numFmtCode);\n } else {\n const numFmtIdNum = numParseInt(numFmtId);\n if (numFmtIdNum == null) {\n throw new Error(`[${ExcelUtils.stringifyAddr(this.addr)}] numFmtId \uD30C\uC2F1 \uC2E4\uD328: ${numFmtId}`);\n }\n numFmt = ExcelUtils.convertNumFmtIdToName(numFmtIdNum);\n }\n\n if (numFmt === \"number\") {\n return parseFloat(cellVal);\n } else if (numFmt === \"string\") {\n return cellVal;\n } else {\n // DateOnly, DateTime, Time\n const dateNum = numParseFloat(cellVal);\n if (dateNum == null) {\n throw new Error(`[${ExcelUtils.stringifyAddr(this.addr)}] \uB0A0\uC9DC \uC22B\uC790 \uD30C\uC2F1 \uC2E4\uD328: ${cellVal}`);\n }\n const tick = ExcelUtils.convertNumberToTimeTick(dateNum);\n if (numFmt === \"DateOnly\") {\n return new DateOnly(tick);\n } else if (numFmt === \"DateTime\") {\n return new DateTime(tick);\n } else {\n return new Time(tick);\n }\n }\n }\n }\n\n //#endregion\n\n //#region Merge Methods\n\n /**\n * \uD604\uC7AC \uC140\uBD80\uD130 \uC9C0\uC815\uB41C \uB05D \uC88C\uD45C\uAE4C\uC9C0 \uC140 \uBCD1\uD569\n * @param r \uBCD1\uD569 \uB05D \uD589 \uC778\uB371\uC2A4 (0-based)\n * @param c \uBCD1\uD569 \uB05D \uC5F4 \uC778\uB371\uC2A4 (0-based)\n * @example\n * // A1 \uC140\uC5D0\uC11C \uD638\uCD9C\uD558\uBA74 A1:C3 \uBC94\uC704 (3\uD589 x 3\uC5F4)\uB97C \uBCD1\uD569\n * await ws.cell(0, 0).merge(2, 2);\n */\n async merge(r: number, c: number): Promise<void> {\n const wsData = await this._getWsData();\n wsData.setMergeCells(this.addr, { r, c });\n }\n\n //#endregion\n\n //#region Style Methods\n\n /** \uC140\uC758 \uC2A4\uD0C0\uC77C ID \uBC18\uD658 */\n async getStyleId(): Promise<string | undefined> {\n const wsData = await this._getWsData();\n return wsData.getCellStyleId(this.addr);\n }\n\n /** \uC140\uC758 \uC2A4\uD0C0\uC77C ID \uC124\uC815 */\n async setStyleId(styleId: string | undefined): Promise<void> {\n const wsData = await this._getWsData();\n wsData.setCellStyleId(this.addr, styleId);\n }\n\n /**\n * \uC140 \uC2A4\uD0C0\uC77C \uC124\uC815\n * @param opts \uC2A4\uD0C0\uC77C \uC635\uC158\n * @param opts.background \uBC30\uACBD\uC0C9 (ARGB \uD615\uC2DD, 8\uC790\uB9AC 16\uC9C4\uC218. \uC608: \"FFFF0000\")\n * @param opts.border \uD14C\uB450\uB9AC \uC704\uCE58 \uBC30\uC5F4 (\uC608: [\"left\", \"right\", \"top\", \"bottom\"])\n * @param opts.horizontalAlign \uAC00\uB85C \uC815\uB82C (\"left\", \"center\", \"right\")\n * @param opts.verticalAlign \uC138\uB85C \uC815\uB82C (\"top\", \"center\", \"bottom\")\n * @param opts.numberFormat \uC22B\uC790 \uD615\uC2DD (\"number\", \"DateOnly\", \"DateTime\", \"Time\", \"string\")\n */\n async setStyle(opts: ExcelStyleOptions): Promise<void> {\n const style: ExcelStyle = {};\n\n if (opts.background != null) {\n if (!/^[0-9A-F]{8}$/i.test(opts.background)) {\n throw new Error(\"\uC0C9\uC0C1 \uD615\uC2DD\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. (\uD615\uC2DD: 00000000: alpha(\uC5ED)+rgb)\");\n }\n style.background = opts.background;\n }\n\n if (opts.border != null) {\n style.border = opts.border;\n }\n\n if (opts.horizontalAlign != null) {\n style.horizontalAlign = opts.horizontalAlign;\n }\n\n if (opts.verticalAlign != null) {\n style.verticalAlign = opts.verticalAlign;\n }\n\n if (opts.numberFormat != null) {\n style.numFmtId = ExcelUtils.convertNumFmtNameToId(opts.numberFormat).toString();\n }\n\n await this._setStyleInternal(style);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async _deleteCell(addr: ExcelAddressPoint): Promise<void> {\n const wsData = await this._getWsData();\n wsData.deleteCell(addr);\n }\n\n private async _getWsData(): Promise<ExcelXmlWorksheet> {\n return (await this._zipCache.get(`xl/worksheets/${this._targetFileName}`)) as ExcelXmlWorksheet;\n }\n\n private async _setStyleInternal(style: ExcelStyle): Promise<void> {\n const wsData = await this._getWsData();\n const styleData = await this._getOrCreateStyleData();\n let styleId = wsData.getCellStyleId(this.addr);\n if (styleId == null) {\n styleId = styleData.add(style);\n } else {\n styleId = styleData.addWithClone(styleId, style);\n }\n wsData.setCellStyleId(this.addr, styleId);\n }\n\n private async _getTypeData(): Promise<ExcelXmlContentType> {\n return (await this._zipCache.get(\"[Content_Types].xml\")) as ExcelXmlContentType;\n }\n\n private async _getSsData(): Promise<ExcelXmlSharedString | undefined> {\n return (await this._zipCache.get(\"xl/sharedStrings.xml\")) as ExcelXmlSharedString | undefined;\n }\n\n private async _getWbRelData(): Promise<ExcelXmlRelationship> {\n return (await this._zipCache.get(\"xl/_rels/workbook.xml.rels\")) as ExcelXmlRelationship;\n }\n\n private async _getStyleData(): Promise<ExcelXmlStyle | undefined> {\n return (await this._zipCache.get(\"xl/styles.xml\")) as ExcelXmlStyle | undefined;\n }\n\n private async _getOrCreateSsData(): Promise<ExcelXmlSharedString> {\n let ssData = await this._getSsData();\n if (ssData == null) {\n ssData = new ExcelXmlSharedStringClass();\n this._zipCache.set(\"xl/sharedStrings.xml\", ssData);\n\n const typeData = await this._getTypeData();\n typeData.add(\n \"/xl/sharedStrings.xml\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n );\n\n const wbRelData = await this._getWbRelData();\n wbRelData.add(\n \"sharedStrings.xml\",\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n );\n }\n return ssData;\n }\n\n private async _getOrCreateStyleData(): Promise<ExcelXmlStyle> {\n let styleData = await this._getStyleData();\n if (styleData == null) {\n styleData = new ExcelXmlStyleClass();\n this._zipCache.set(\"xl/styles.xml\", styleData);\n\n const typeData = await this._getTypeData();\n typeData.add(\"/xl/styles.xml\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\");\n\n const wbRelData = await this._getWbRelData();\n wbRelData.add(\"styles.xml\", \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\");\n }\n return styleData;\n }\n\n //#endregion\n}\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +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,wDAAwD;AACxD,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,iCAAiC;IACjC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;IAI1B,iBAAiB;IACX,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAYtC,cAAc;IACR,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAK7B,UAAU;CAGzB"}
|
package/dist/excel-col.js
CHANGED
package/dist/excel-col.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-col.ts"],
|
|
4
|
-
"sourcesContent": ["import \"@simplysm/core-common\";\nimport { ExcelCell } from \"./excel-cell\";\nimport type { ExcelXmlWorksheet } from \"./xml/excel-xml-worksheet\";\nimport type { ZipCache } from \"./utils/zip-cache\";\n\n/** Excel \uC6CC\uD06C\uC2DC\uD2B8\uC758 \uC5F4\uC744 \uB098\uD0C0\uB0B4\uB294 \uD074\uB798\uC2A4. \uC140 \uC811\uADFC \uBC0F \uC5F4 \uB108\uBE44 \uC124\uC815 \uAE30\uB2A5\uC744 \uC81C\uACF5\uD55C\uB2E4. */\nexport class ExcelCol {\n private readonly _cellMap = new Map<number, ExcelCell>();\n\n constructor(\n private readonly _zipCache: ZipCache,\n private readonly _targetFileName: string,\n private readonly _c: number,\n ) {}\n\n /** \uD589 \uC778\uB371\uC2A4\uC5D0 \uD574\uB2F9\uD558\uB294 \uC140 \uBC18\uD658 (0-based) */\n cell(r: number): ExcelCell {\n return this._cellMap.getOrCreate(r, new ExcelCell(this._zipCache, this._targetFileName, r, this._c));\n }\n\n /** \uC5F4\uC758 \uBAA8\uB4E0 \uC140 \uBC18\uD658 */\n async getCells(): Promise<ExcelCell[]> {\n const result: ExcelCell[] = [];\n const wsData = await this._getWsData();\n const range = wsData.range;\n\n for (let r = range.s.r; r <= range.e.r; r++) {\n result[r] = this.cell(r);\n }\n\n return result;\n }\n\n /** \uC5F4 \uB108\uBE44 \uC124\uC815 */\n async setWidth(size: number): Promise<void> {\n const wsData = await this._getWsData();\n wsData.setColWidth((this._c + 1).toString(), size.toString());\n }\n\n private async _getWsData(): Promise<ExcelXmlWorksheet> {\n return (await this._zipCache.get(`xl/worksheets/${this._targetFileName}`)) as ExcelXmlWorksheet;\n }\n}\n"],
|
|
5
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,YAAY,GAAG,IAAI,UAAU,KAAK,WAAW,KAAK,iBAAiB,GAAG,KAAK,EAAE,CAAC;AAAA,EACrG;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;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +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,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,iCAAiC;IACjC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;IAI1B,iBAAiB;IACX,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAYxB,UAAU;CAGzB"}
|
package/dist/excel-row.js
CHANGED
package/dist/excel-row.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-row.ts"],
|
|
4
|
-
"sourcesContent": ["import \"@simplysm/core-common\";\nimport { ExcelCell } from \"./excel-cell\";\nimport type { ExcelXmlWorksheet } from \"./xml/excel-xml-worksheet\";\nimport type { ZipCache } from \"./utils/zip-cache\";\n\n/** Excel \uC6CC\uD06C\uC2DC\uD2B8\uC758 \uD589\uC744 \uB098\uD0C0\uB0B4\uB294 \uD074\uB798\uC2A4. \uC140 \uC811\uADFC \uAE30\uB2A5\uC744 \uC81C\uACF5\uD55C\uB2E4. */\nexport class ExcelRow {\n private readonly _cellMap = new Map<number, ExcelCell>();\n\n constructor(\n private readonly _zipCache: ZipCache,\n private readonly _targetFileName: string,\n private readonly _r: number,\n ) {}\n\n /** \uC5F4 \uC778\uB371\uC2A4\uC5D0 \uD574\uB2F9\uD558\uB294 \uC140 \uBC18\uD658 (0-based) */\n cell(c: number): ExcelCell {\n return this._cellMap.getOrCreate(c, new ExcelCell(this._zipCache, this._targetFileName, this._r, c));\n }\n\n /** \uD589\uC758 \uBAA8\uB4E0 \uC140 \uBC18\uD658 */\n async getCells(): Promise<ExcelCell[]> {\n const result: ExcelCell[] = [];\n const wsData = await this._getWsData();\n const range = wsData.range;\n\n for (let c = range.s.c; c <= range.e.c; c++) {\n result[c] = this.cell(c);\n }\n\n return result;\n }\n\n private async _getWsData(): Promise<ExcelXmlWorksheet> {\n return (await this._zipCache.get(`xl/worksheets/${this._targetFileName}`)) as ExcelXmlWorksheet;\n }\n}\n"],
|
|
5
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,YAAY,GAAG,IAAI,UAAU,KAAK,WAAW,KAAK,iBAAiB,KAAK,IAAI,CAAC,CAAC;AAAA,EACrG;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;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +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,0BAA0B;IACpB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM5C,sBAAsB;IAChB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA8B5D,mCAAmC;IAC7B,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuCzE,sBAAsB;IAChB,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAKhC,qBAAqB;IACf,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
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ExcelWorksheet } from "./excel-worksheet";
|
|
2
|
-
import { ZipCache } from "./utils/zip-cache";
|
|
3
|
-
import { ExcelXmlContentType } from "./xml/excel-xml-content-type";
|
|
4
|
-
import { ExcelXmlRelationship } from "./xml/excel-xml-relationship";
|
|
5
|
-
import { ExcelXmlWorkbook as ExcelXmlWorkbookClass } from "./xml/excel-xml-workbook";
|
|
6
|
-
import { ExcelXmlWorksheet as ExcelXmlWorksheetClass } from "./xml/excel-xml-worksheet";
|
|
1
|
+
import { ExcelWorksheet } from "./excel-worksheet.js";
|
|
2
|
+
import { ZipCache } from "./utils/zip-cache.js";
|
|
3
|
+
import { ExcelXmlContentType } from "./xml/excel-xml-content-type.js";
|
|
4
|
+
import { ExcelXmlRelationship } from "./xml/excel-xml-relationship.js";
|
|
5
|
+
import { ExcelXmlWorkbook as ExcelXmlWorkbookClass } from "./xml/excel-xml-workbook.js";
|
|
6
|
+
import { ExcelXmlWorksheet as ExcelXmlWorksheetClass } from "./xml/excel-xml-worksheet.js";
|
|
7
7
|
class ExcelWorkbook {
|
|
8
8
|
zipCache;
|
|
9
9
|
_wsMap = /* @__PURE__ */ new Map();
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-workbook.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Bytes } from \"@simplysm/core-common\";\nimport { ExcelWorksheet } from \"./excel-worksheet\";\nimport { ZipCache } from \"./utils/zip-cache\";\nimport { ExcelXmlContentType } from \"./xml/excel-xml-content-type\";\nimport { ExcelXmlRelationship } from \"./xml/excel-xml-relationship\";\nimport type { ExcelXmlWorkbook } from \"./xml/excel-xml-workbook\";\nimport { ExcelXmlWorkbook as ExcelXmlWorkbookClass } from \"./xml/excel-xml-workbook\";\nimport { ExcelXmlWorksheet as ExcelXmlWorksheetClass } from \"./xml/excel-xml-worksheet\";\n\n/**\n * Excel \uC6CC\uD06C\uBD81 \uCC98\uB9AC \uD074\uB798\uC2A4\n *\n * @remarks\n * \uC774 \uD074\uB798\uC2A4\uB294 \uB0B4\uBD80\uC801\uC73C\uB85C ZIP \uB9AC\uC18C\uC2A4\uB97C \uAD00\uB9AC\uD569\uB2C8\uB2E4.\n * \uC0AC\uC6A9 \uC644\uB8CC \uD6C4 \uBC18\uB4DC\uC2DC \uB9AC\uC18C\uC2A4\uB97C \uD574\uC81C\uD574\uC57C \uD569\uB2C8\uB2E4.\n *\n * ## \uBE44\uB3D9\uAE30 \uC124\uACC4\n *\n * \uB300\uC6A9\uB7C9 Excel \uD30C\uC77C\uC758 \uBA54\uBAA8\uB9AC \uD6A8\uC728\uC131\uC744 \uC704\uD574 Lazy Loading \uAD6C\uC870\uB97C \uCC44\uD0DD\uD569\uB2C8\uB2E4:\n * - ZIP \uD30C\uC77C \uB0B4\uBD80\uC758 XML\uC740 \uC811\uADFC \uC2DC\uC810\uC5D0\uB9CC \uC77D\uACE0 \uD30C\uC2F1\uD55C\uB2E4\n * - SharedStrings, Styles \uB4F1 \uB300\uC6A9\uB7C9 XML\uC740 \uD544\uC694\uD560 \uB54C\uB9CC \uB85C\uB4DC\uD55C\uB2E4\n * - \uADF9\uB2E8\uC801 \uCF00\uC774\uC2A4(\uC608: SharedStrings\uAC00 1TB\uC778 \uD30C\uC77C\uC5D0\uC11C \uC22B\uC790 \uC140 \uD558\uB098\uB9CC \uC77D\uAE30)\uC5D0\uC11C\uB3C4 \uBA54\uBAA8\uB9AC \uD6A8\uC728\uC801\uC774\uB2E4\n *\n * @example\n * ```typescript\n * // await using \uC0AC\uC6A9 (\uAD8C\uC7A5)\n * await using wb = new ExcelWorkbook(bytes);\n * const ws = await wb.getWorksheet(0);\n * // ... \uC791\uC5C5 \uC218\uD589\n * // \uC2A4\uCF54\uD504 \uC885\uB8CC \uC2DC \uC790\uB3D9\uC73C\uB85C \uB9AC\uC18C\uC2A4 \uD574\uC81C\n *\n * // \uB610\uB294 try-finally \uC0AC\uC6A9\n * const wb = new ExcelWorkbook(bytes);\n * try {\n * const ws = await wb.getWorksheet(0);\n * // ... \uC791\uC5C5 \uC218\uD589\n * } finally {\n * await wb.close();\n * }\n * ```\n */\nexport class ExcelWorkbook {\n readonly zipCache: ZipCache;\n private readonly _wsMap = new Map<number, ExcelWorksheet>();\n private _isClosed = false;\n\n /**\n * @param arg \uAE30\uC874 Excel \uD30C\uC77C \uB370\uC774\uD130 (Blob \uB610\uB294 Uint8Array). \uC0DD\uB7B5 \uC2DC \uC0C8 \uC6CC\uD06C\uBD81\uC744 \uC0DD\uC131\uD55C\uB2E4.\n */\n constructor(arg?: Blob | Bytes) {\n if (arg != null) {\n this.zipCache = new ZipCache(arg);\n } else {\n this.zipCache = new ZipCache();\n\n // Global ContentTypes\n const typeXml = new ExcelXmlContentType();\n this.zipCache.set(\"[Content_Types].xml\", typeXml);\n\n // Global Rels\n this.zipCache.set(\n \"_rels/.rels\",\n new ExcelXmlRelationship().add(\n \"xl/workbook.xml\",\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n ),\n );\n\n // Workbook\n const wbXml = new ExcelXmlWorkbookClass();\n this.zipCache.set(\"xl/workbook.xml\", wbXml);\n\n // Workbook Rels\n const wbRelXml = new ExcelXmlRelationship();\n this.zipCache.set(\"xl/_rels/workbook.xml.rels\", wbRelXml);\n }\n }\n\n //#region Worksheet Methods\n\n private _ensureNotClosed(): void {\n if (this._isClosed) {\n throw new Error(\"ExcelWorkbook\uC774 \uC774\uBBF8 \uB2EB\uD614\uC2B5\uB2C8\uB2E4. close() \uD638\uCD9C \uD6C4\uC5D0\uB294 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\");\n }\n }\n\n /** \uC6CC\uD06C\uBD81\uC758 \uBAA8\uB4E0 \uC6CC\uD06C\uC2DC\uD2B8 \uC774\uB984\uC744 \uBC18\uD658 */\n async getWorksheetNames(): Promise<string[]> {\n this._ensureNotClosed();\n const wbData = (await this.zipCache.get(\"xl/workbook.xml\")) as ExcelXmlWorkbook;\n return wbData.sheetNames;\n }\n\n /** \uC0C8 \uC6CC\uD06C\uC2DC\uD2B8\uB97C \uC0DD\uC131\uD558\uACE0 \uBC18\uD658 */\n async createWorksheet(name: string): Promise<ExcelWorksheet> {\n this._ensureNotClosed();\n // Workbook\n const wbXml = (await this.zipCache.get(\"xl/workbook.xml\")) as ExcelXmlWorkbook;\n const newWsRelId = wbXml.addWorksheet(name).lastWsRelId!;\n\n // Content Types\n const typeXml = (await this.zipCache.get(\"[Content_Types].xml\")) as ExcelXmlContentType;\n typeXml.add(\n `/xl/worksheets/sheet${newWsRelId}.xml`,\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n );\n\n // Workbook Rels\n const wbRelXml = (await this.zipCache.get(\"xl/_rels/workbook.xml.rels\")) as ExcelXmlRelationship;\n wbRelXml.insert(\n newWsRelId,\n `worksheets/sheet${newWsRelId}.xml`,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n );\n\n // Worksheet\n const wsXml = new ExcelXmlWorksheetClass();\n this.zipCache.set(`xl/worksheets/sheet${newWsRelId}.xml`, wsXml);\n\n const ws = new ExcelWorksheet(this.zipCache, newWsRelId, `sheet${newWsRelId}.xml`);\n this._wsMap.set(newWsRelId, ws);\n return ws;\n }\n\n /** \uC774\uB984 \uB610\uB294 \uC778\uB371\uC2A4(0-based)\uB85C \uC6CC\uD06C\uC2DC\uD2B8\uB97C \uC870\uD68C */\n async getWorksheet(nameOrIndex: string | number): Promise<ExcelWorksheet> {\n this._ensureNotClosed();\n const wbData = (await this.zipCache.get(\"xl/workbook.xml\")) as ExcelXmlWorkbook;\n const wsId =\n typeof nameOrIndex === \"string\" ? wbData.getWsRelIdByName(nameOrIndex) : wbData.getWsRelIdByIndex(nameOrIndex);\n\n if (wsId === undefined) {\n if (typeof nameOrIndex === \"string\") {\n throw new Error(`\uC2DC\uD2B8\uBA85\uC774 '${nameOrIndex}'\uC778 \uC2DC\uD2B8\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`);\n } else {\n throw new Error(`'${nameOrIndex}'\uBC88\uC9F8 \uC2DC\uD2B8\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`);\n }\n }\n\n if (this._wsMap.has(wsId)) {\n return this._wsMap.get(wsId)!;\n }\n\n const relData = (await this.zipCache.get(\"xl/_rels/workbook.xml.rels\")) as ExcelXmlRelationship;\n const targetFilePath = relData.getTargetByRelId(wsId);\n if (targetFilePath == null) {\n throw new Error(`\uC2DC\uD2B8 \uAD00\uACC4 \uC815\uBCF4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: rId${wsId}`);\n }\n\n // path.basename \uB300\uC2E0 \uC9C1\uC811 \uD30C\uC77C\uBA85 \uCD94\uCD9C (\uBE0C\uB77C\uC6B0\uC800 \uD638\uD658\uC131)\n const fileName = targetFilePath.split(\"/\").pop();\n if (fileName == null) {\n throw new Error(`\uC2DC\uD2B8 \uD30C\uC77C\uBA85\uC744 \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: ${targetFilePath}`);\n }\n\n const ws = new ExcelWorksheet(this.zipCache, wsId, fileName);\n this._wsMap.set(wsId, ws);\n return ws;\n }\n\n //#endregion\n\n //#region Export Methods\n\n /** \uC6CC\uD06C\uBD81\uC744 \uBC14\uC774\uD2B8 \uBC30\uC5F4\uB85C \uCD9C\uB825 */\n async getBytes(): Promise<Bytes> {\n this._ensureNotClosed();\n return this.zipCache.toBytes();\n }\n\n /** \uC6CC\uD06C\uBD81\uC744 Blob\uC73C\uB85C \uCD9C\uB825 */\n async getBlob(): Promise<Blob> {\n this._ensureNotClosed();\n const bytes = await this.zipCache.toBytes();\n return new Blob([new Uint8Array(bytes)], {\n type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n });\n }\n\n //#endregion\n\n //#region Lifecycle Methods\n\n /**\n * \uC6CC\uD06C\uBD81 \uB9AC\uC18C\uC2A4 \uD574\uC81C\n *\n * @remarks\n * ZIP \uB9AC\uB354\uC640 \uB0B4\uBD80 \uCE90\uC2DC\uB97C \uC815\uB9AC\uD569\uB2C8\uB2E4.\n * \uD638\uCD9C \uD6C4\uC5D0\uB294 \uC774 \uC6CC\uD06C\uBD81 \uC778\uC2A4\uD134\uC2A4\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n * \uC774\uBBF8 \uB2EB\uD78C \uC6CC\uD06C\uBD81\uC5D0 \uB300\uD574 \uD638\uCD9C\uD574\uB3C4 \uC548\uC804\uD569\uB2C8\uB2E4 (no-op).\n */\n async close(): Promise<void> {\n if (this._isClosed) {\n return; // \uC774\uBBF8 \uB2EB\uD78C \uACBD\uC6B0 \uBB34\uC2DC\n }\n this._isClosed = true;\n this._wsMap.clear();\n await this.zipCache.close();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.close();\n }\n\n //#endregion\n}\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-worksheet.d.ts","sourceRoot":"","sources":["../src/excel-worksheet.ts"],"names":[],"mappings":"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"}
|
package/dist/excel-worksheet.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
2
|
import { strIsNullOrEmpty } from "@simplysm/core-common";
|
|
3
3
|
import mime from "mime";
|
|
4
|
-
import { ExcelCol } from "./excel-col";
|
|
5
|
-
import { ExcelRow } from "./excel-row";
|
|
6
|
-
import { ExcelXmlDrawing } from "./xml/excel-xml-drawing";
|
|
7
|
-
import { ExcelXmlRelationship } from "./xml/excel-xml-relationship";
|
|
4
|
+
import { ExcelCol } from "./excel-col.js";
|
|
5
|
+
import { ExcelRow } from "./excel-row.js";
|
|
6
|
+
import { ExcelXmlDrawing } from "./xml/excel-xml-drawing.js";
|
|
7
|
+
import { ExcelXmlRelationship } from "./xml/excel-xml-relationship.js";
|
|
8
8
|
class ExcelWorksheet {
|
|
9
9
|
constructor(_zipCache, _relId, _targetFileName) {
|
|
10
10
|
this._zipCache = _zipCache;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-worksheet.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Bytes } from \"@simplysm/core-common\";\nimport \"@simplysm/core-common\";\nimport { strIsNullOrEmpty } from \"@simplysm/core-common\";\nimport mime from \"mime\";\nimport type { ExcelCell } from \"./excel-cell\";\nimport { ExcelCol } from \"./excel-col\";\nimport { ExcelRow } from \"./excel-row\";\nimport type { ExcelAddressPoint, ExcelAddressRangePoint, ExcelValueType } from \"./types\";\nimport type { ZipCache } from \"./utils/zip-cache\";\nimport type { ExcelXmlContentType } from \"./xml/excel-xml-content-type\";\nimport { ExcelXmlDrawing } from \"./xml/excel-xml-drawing\";\nimport { ExcelXmlRelationship } from \"./xml/excel-xml-relationship\";\nimport type { ExcelXmlWorkbook } from \"./xml/excel-xml-workbook\";\nimport type { ExcelXmlWorksheet } from \"./xml/excel-xml-worksheet\";\n\n/**\n * Excel \uC6CC\uD06C\uC2DC\uD2B8\uB97C \uB098\uD0C0\uB0B4\uB294 \uD074\uB798\uC2A4.\n * \uC140 \uC811\uADFC, \uD589/\uC5F4 \uBCF5\uC0AC, \uB370\uC774\uD130 \uD14C\uC774\uBE14 \uCC98\uB9AC, \uC774\uBBF8\uC9C0 \uC0BD\uC785 \uB4F1\uC758 \uAE30\uB2A5\uC744 \uC81C\uACF5\uD55C\uB2E4.\n */\nexport class ExcelWorksheet {\n private readonly _rowMap = new Map<number, ExcelRow>();\n private readonly _colMap = new Map<number, ExcelCol>();\n\n constructor(\n private readonly _zipCache: ZipCache,\n private readonly _relId: number,\n private readonly _targetFileName: string,\n ) {}\n\n //#region Name Methods\n\n /** \uC6CC\uD06C\uC2DC\uD2B8 \uC774\uB984 \uBC18\uD658 */\n async getName(): Promise<string> {\n const wbXmlData = await this._getWbData();\n const name = wbXmlData.getWorksheetNameById(this._relId);\n if (name == null) {\n throw new Error(`\uC6CC\uD06C\uC2DC\uD2B8 ID ${this._relId}\uC5D0 \uD574\uB2F9\uD558\uB294 \uC774\uB984\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4`);\n }\n return name;\n }\n\n /** \uC6CC\uD06C\uC2DC\uD2B8 \uC774\uB984 \uBCC0\uACBD */\n async setName(newName: string): Promise<void> {\n const wbXmlData = await this._getWbData();\n wbXmlData.setWorksheetNameById(this._relId, newName);\n }\n\n //#endregion\n\n //#region Cell Access Methods\n\n /** \uD589 \uAC1D\uCCB4 \uBC18\uD658 (0-based) */\n row(r: number): ExcelRow {\n return this._rowMap.getOrCreate(r, new ExcelRow(this._zipCache, this._targetFileName, r));\n }\n\n /** \uC140 \uAC1D\uCCB4 \uBC18\uD658 (0-based \uD589/\uC5F4) */\n cell(r: number, c: number): ExcelCell {\n return this.row(r).cell(c);\n }\n\n /** \uC5F4 \uAC1D\uCCB4 \uBC18\uD658 (0-based) */\n col(c: number): ExcelCol {\n return this._colMap.getOrCreate(c, new ExcelCol(this._zipCache, this._targetFileName, c));\n }\n\n //#endregion\n\n //#region Copy Methods\n\n /** \uC18C\uC2A4 \uD589\uC758 \uC2A4\uD0C0\uC77C\uC744 \uD0C0\uAC9F \uD589\uC5D0 \uBCF5\uC0AC */\n async copyRowStyle(srcR: number, targetR: number): Promise<void> {\n const range = await this.getRange();\n\n for (let c = range.s.c; c <= range.e.c; c++) {\n await this.copyCellStyle({ r: srcR, c: c }, { r: targetR, c: c });\n }\n }\n\n /** \uC18C\uC2A4 \uC140\uC758 \uC2A4\uD0C0\uC77C\uC744 \uD0C0\uAC9F \uC140\uC5D0 \uBCF5\uC0AC */\n async copyCellStyle(srcAddr: ExcelAddressPoint, targetAddr: ExcelAddressPoint): Promise<void> {\n const wsData = await this._getWsData();\n\n const styleId = wsData.getCellStyleId(srcAddr);\n if (styleId != null) {\n wsData.setCellStyleId(targetAddr, styleId);\n }\n }\n\n /** \uC18C\uC2A4 \uD589\uC744 \uD0C0\uAC9F \uD589\uC5D0 \uBCF5\uC0AC (\uB36E\uC5B4\uC4F0\uAE30) */\n async copyRow(srcR: number, targetR: number): Promise<void> {\n const wsData = await this._getWsData();\n wsData.copyRow(srcR, targetR);\n }\n\n /** \uC18C\uC2A4 \uC140\uC744 \uD0C0\uAC9F \uC140\uC5D0 \uBCF5\uC0AC */\n async copyCell(srcAddr: ExcelAddressPoint, targetAddr: ExcelAddressPoint): Promise<void> {\n const wsData = await this._getWsData();\n wsData.copyCell(srcAddr, targetAddr);\n }\n\n /**\n * \uC18C\uC2A4 \uD589\uC744 \uD0C0\uAC9F \uC704\uCE58\uC5D0 \uC0BD\uC785 \uBCF5\uC0AC.\n * \uD0C0\uAC9F \uC704\uCE58 \uC774\uD558\uC758 \uAE30\uC874 \uD589\uB4E4\uC740 \uD55C \uCE78\uC529 \uC544\uB798\uB85C \uBC00\uB9B0\uB2E4.\n * @param srcR \uBCF5\uC0AC\uD560 \uC18C\uC2A4 \uD589 \uC778\uB371\uC2A4 (0-based)\n * @param targetR \uC0BD\uC785\uD560 \uD0C0\uAC9F \uD589 \uC778\uB371\uC2A4 (0-based)\n */\n async insertCopyRow(srcR: number, targetR: number): Promise<void> {\n const wsData = await this._getWsData();\n const range = wsData.range;\n\n // targetR \uC774\uD558 \uBAA8\uB4E0 \uBCD1\uD569 \uC140\uC758 \uD589 \uC778\uB371\uC2A4 +1\n const mergeCells = wsData.getMergeCells();\n for (const mc of mergeCells) {\n if (mc.s.r >= targetR) mc.s.r++;\n if (mc.e.r >= targetR) mc.e.r++;\n }\n\n // srcR >= targetR\uC778 \uACBD\uC6B0, \uBC00\uB9BC \uD6C4 srcR \uC704\uCE58\uAC00 \uBCC0\uACBD\uB418\uBBC0\uB85C \uBCF4\uC815\n const adjustedSrcR = srcR >= targetR ? srcR + 1 : srcR;\n\n for (let r = range.e.r; r >= targetR; r--) {\n await this.copyRow(r, r + 1);\n }\n\n await this.copyRow(adjustedSrcR, targetR);\n }\n\n //#endregion\n\n //#region Range Methods\n\n /** \uC6CC\uD06C\uC2DC\uD2B8\uC758 \uB370\uC774\uD130 \uBC94\uC704 \uBC18\uD658 */\n async getRange(): Promise<ExcelAddressRangePoint> {\n const xml = await this._getWsData();\n return xml.range;\n }\n\n /** \uC6CC\uD06C\uC2DC\uD2B8\uC758 \uBAA8\uB4E0 \uC140\uC744 2\uCC28\uC6D0 \uBC30\uC5F4\uB85C \uBC18\uD658 */\n async getCells(): Promise<ExcelCell[][]> {\n const xml = await this._getWsData();\n const range = xml.range;\n const promises: Promise<ExcelCell[]>[] = [];\n\n for (let r = range.s.r; r <= range.e.r; r++) {\n promises.push(this.row(r).getCells());\n }\n\n return Promise.all(promises);\n }\n\n //#endregion\n\n //#region Data Methods\n\n /**\n * \uC6CC\uD06C\uC2DC\uD2B8 \uB370\uC774\uD130\uB97C \uD14C\uC774\uBE14(\uB808\uCF54\uB4DC \uBC30\uC5F4) \uD615\uC2DD\uC73C\uB85C \uBC18\uD658.\n * @param opt.headerRowIndex \uD5E4\uB354 \uD589 \uC778\uB371\uC2A4 (\uAE30\uBCF8\uAC12: \uCCAB \uBC88\uC9F8 \uD589)\n * @param opt.checkEndColIndex \uB370\uC774\uD130 \uC885\uB8CC\uB97C \uD310\uB2E8\uD560 \uC5F4 \uC778\uB371\uC2A4. \uD574\uB2F9 \uC5F4\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uB370\uC774\uD130 \uB05D\uC73C\uB85C \uAC04\uC8FC\n * @param opt.usableHeaderNameFn \uC0AC\uC6A9\uD560 \uD5E4\uB354\uB97C \uD544\uD130\uB9C1\uD558\uB294 \uD568\uC218\n */\n async getDataTable(opt?: {\n headerRowIndex?: number;\n checkEndColIndex?: number;\n usableHeaderNameFn?: (headerName: string) => boolean;\n }): Promise<Record<string, ExcelValueType>[]> {\n const result: Record<string, ExcelValueType>[] = [];\n const headerMap = new Map<string, number>();\n\n const xml = await this._getWsData();\n const range = xml.range;\n const startRow = opt?.headerRowIndex ?? range.s.r;\n\n for (let c = range.s.c; c <= range.e.c; c++) {\n const headerName = await this.cell(startRow, c).getVal();\n if (typeof headerName === \"string\") {\n if (opt?.usableHeaderNameFn == null || opt.usableHeaderNameFn(headerName)) {\n headerMap.set(headerName, c);\n }\n }\n }\n\n for (let r = startRow + 1; r <= range.e.r; r++) {\n if (opt?.checkEndColIndex !== undefined && (await this.cell(r, opt.checkEndColIndex).getVal()) === undefined) {\n break;\n }\n\n const record: Record<string, ExcelValueType> = {};\n for (const header of headerMap.keys()) {\n const c = headerMap.get(header)!;\n record[header] = await this.cell(r, c).getVal();\n }\n\n result.push(record);\n }\n\n return result;\n }\n\n /**\n * 2\uCC28\uC6D0 \uBC30\uC5F4 \uB370\uC774\uD130\uB97C \uC6CC\uD06C\uC2DC\uD2B8\uC5D0 \uAE30\uB85D\n * @param matrix 2\uCC28\uC6D0 \uBC30\uC5F4 \uB370\uC774\uD130 (\uD589 \uC6B0\uC120, 0\uBC88 \uC778\uB371\uC2A4\uAC00 \uCCAB \uBC88\uC9F8 \uD589)\n */\n async setDataMatrix(matrix: ExcelValueType[][]): Promise<void> {\n for (let r = 0; r < matrix.length; r++) {\n for (let c = 0; c < matrix[r].length; c++) {\n await this.cell(r, c).setVal(matrix[r][c]);\n }\n }\n }\n\n /**\n * \uB808\uCF54\uB4DC \uBC30\uC5F4\uC744 \uC6CC\uD06C\uC2DC\uD2B8\uC5D0 \uAE30\uB85D\n * @param records \uB808\uCF54\uB4DC \uBC30\uC5F4. \uCCAB \uD589\uC5D0 \uD5E4\uB354\uAC00 \uC790\uB3D9 \uC0DD\uC131\uB418\uACE0, \uC774\uD6C4 \uD589\uC5D0 \uB370\uC774\uD130\uAC00 \uAE30\uB85D\uB41C\uB2E4.\n */\n async setRecords(records: Record<string, ExcelValueType>[]): Promise<void> {\n const headers = records\n .flatMap((item) => Object.keys(item))\n .distinct()\n .filter((item) => !strIsNullOrEmpty(item));\n\n for (let c = 0; c < headers.length; c++) {\n await this.cell(0, c).setVal(headers[c]);\n }\n\n for (let r = 1; r < records.length + 1; r++) {\n for (let c = 0; c < headers.length; c++) {\n await this.cell(r, c).setVal(records[r - 1][headers[c]]);\n }\n }\n }\n\n //#endregion\n\n //#region View Methods\n\n /** \uC6CC\uD06C\uC2DC\uD2B8 \uD655\uB300/\uCD95\uC18C \uBE44\uC728 \uC124\uC815 (\uD37C\uC13C\uD2B8) */\n async setZoom(percent: number): Promise<void> {\n const wbXml = await this._getWbData();\n wbXml.initializeView();\n\n const wsXml = await this._getWsData();\n wsXml.setZoom(percent);\n }\n\n /** \uD589/\uC5F4 \uD2C0 \uACE0\uC815 \uC124\uC815 */\n async setFix(point: { r?: number; c?: number }): Promise<void> {\n const wbXml = await this._getWbData();\n wbXml.initializeView();\n\n const wsXml = await this._getWsData();\n wsXml.setFix(point);\n }\n\n //#endregion\n\n //#region Image Methods\n\n /**\n * \uC6CC\uD06C\uC2DC\uD2B8\uC5D0 \uC774\uBBF8\uC9C0\uB97C \uC0BD\uC785.\n * @param opts.bytes \uC774\uBBF8\uC9C0 \uBC14\uC774\uB108\uB9AC \uB370\uC774\uD130\n * @param opts.ext \uC774\uBBF8\uC9C0 \uD655\uC7A5\uC790 (png, jpg \uB4F1)\n * @param opts.from \uC774\uBBF8\uC9C0 \uC2DC\uC791 \uC704\uCE58 (0-based \uD589/\uC5F4 \uC778\uB371\uC2A4, rOff/cOff\uB294 EMU \uB2E8\uC704 \uC624\uD504\uC14B)\n * @param opts.to \uC774\uBBF8\uC9C0 \uB05D \uC704\uCE58 (\uC0DD\uB7B5 \uC2DC from \uC704\uCE58\uC5D0 \uC6D0\uBCF8 \uD06C\uAE30\uB85C \uC0BD\uC785)\n */\n async addImage(opts: {\n bytes: Bytes;\n ext: string;\n from: { r: number; c: number; rOff?: number | string; cOff?: number | string };\n to?: { r: number; c: number; rOff?: number | string; cOff?: number | string };\n }): Promise<void> {\n const mimeType = mime.getType(opts.ext);\n if (mimeType == null) {\n throw new Error(`\uD655\uC7A5\uC790 '${opts.ext}'\uC758 MIME \uD0C0\uC785\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4`);\n }\n\n // 1. media \uD30C\uC77C\uBA85 \uACB0\uC815 \uBC0F \uC800\uC7A5\n let mediaIndex = 1;\n while ((await this._zipCache.get(`xl/media/image${mediaIndex}.${opts.ext}`)) !== undefined) {\n mediaIndex++;\n }\n const mediaPath = `xl/media/image${mediaIndex}.${opts.ext}`;\n this._zipCache.set(mediaPath, opts.bytes);\n\n // 2. [Content_Types].xml \uAC31\uC2E0\n const typeXml = (await this._zipCache.get(\"[Content_Types].xml\")) as ExcelXmlContentType;\n typeXml.add(`/xl/media/image${mediaIndex}.${opts.ext}`, mimeType);\n\n // 3. worksheet\uC758 \uAE30\uC874 drawing \uD655\uC778\n const wsXml = await this._getWsData();\n const sheetRelsPath = `xl/worksheets/_rels/${this._targetFileName}.rels`;\n let sheetRels = (await this._zipCache.get(sheetRelsPath)) as ExcelXmlRelationship | undefined;\n\n // \uAE30\uC874 drawing \uCC3E\uAE30\n let drawingIndex: number | undefined;\n let drawingPath: string | undefined;\n let drawing: ExcelXmlDrawing | undefined;\n let drawingRels: ExcelXmlRelationship | undefined;\n\n if (sheetRels != null) {\n const existingDrawingRel = sheetRels.data.Relationships.Relationship?.find(\n (r) => r.$.Type === \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n );\n if (existingDrawingRel != null) {\n // \uAE30\uC874 drawing \uACBD\uB85C\uC5D0\uC11C \uC778\uB371\uC2A4 \uCD94\uCD9C\n const match = existingDrawingRel.$.Target.match(/drawing(\\d+)\\.xml$/);\n if (match != null) {\n drawingIndex = parseInt(match[1], 10);\n drawingPath = `xl/drawings/drawing${drawingIndex}.xml`;\n drawing = (await this._zipCache.get(drawingPath)) as ExcelXmlDrawing | undefined;\n drawingRels = (await this._zipCache.get(`xl/drawings/_rels/drawing${drawingIndex}.xml.rels`)) as\n | ExcelXmlRelationship\n | undefined;\n }\n }\n }\n\n // 4. drawing\uC774 \uC5C6\uC73C\uBA74 \uC0C8\uB85C \uC0DD\uC131\n if (drawingIndex == null || drawingPath == null || drawing == null) {\n drawingIndex = 1;\n while ((await this._zipCache.get(`xl/drawings/drawing${drawingIndex}.xml`)) !== undefined) {\n drawingIndex++;\n }\n drawingPath = `xl/drawings/drawing${drawingIndex}.xml`;\n drawing = new ExcelXmlDrawing();\n\n // [Content_Types].xml\uC5D0 drawing \uD0C0\uC785 \uCD94\uAC00\n typeXml.add(\"/\" + drawingPath, \"application/vnd.openxmlformats-officedocument.drawing+xml\");\n\n // worksheet\uC758 rels\uC5D0 drawing \uCD94\uAC00\n sheetRels = sheetRels ?? new ExcelXmlRelationship();\n const sheetRelNum = sheetRels.addAndGetId(\n `../drawings/drawing${drawingIndex}.xml`,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n );\n const drawingRelIdOnWorksheet = `rId${sheetRelNum}`;\n this._zipCache.set(sheetRelsPath, sheetRels);\n\n // worksheet XML\uC5D0 drawing \uCD94\uAC00\n wsXml.data.worksheet.$[\"xmlns:r\"] =\n wsXml.data.worksheet.$[\"xmlns:r\"] ?? \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\";\n wsXml.data.worksheet.drawing = wsXml.data.worksheet.drawing ?? [];\n wsXml.data.worksheet.drawing.push({ $: { \"r:id\": drawingRelIdOnWorksheet } });\n this._zipCache.set(`xl/worksheets/${this._targetFileName}`, wsXml);\n }\n\n // 5. drawing rels \uC900\uBE44 (\uC5C6\uC73C\uBA74 \uC0C8\uB85C \uC0DD\uC131)\n drawingRels = drawingRels ?? new ExcelXmlRelationship();\n const mediaFileName = mediaPath.slice(3);\n const drawingTarget = `../${mediaFileName}`;\n const relNum = drawingRels.addAndGetId(\n drawingTarget,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n );\n this._zipCache.set(`xl/drawings/_rels/drawing${drawingIndex}.xml.rels`, drawingRels);\n\n // 6. drawing\uC5D0 \uC774\uBBF8\uC9C0 \uCD94\uAC00\n const blipRelId = `rId${relNum}`;\n drawing.addPicture({\n from: opts.from,\n to: opts.to ?? { r: opts.from.r + 1, c: opts.from.c + 1 },\n blipRelId: blipRelId,\n });\n this._zipCache.set(drawingPath, drawing);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async _getWsData(): Promise<ExcelXmlWorksheet> {\n return (await this._zipCache.get(`xl/worksheets/${this._targetFileName}`)) as ExcelXmlWorksheet;\n }\n\n private async _getWbData(): Promise<ExcelXmlWorkbook> {\n return (await this._zipCache.get(\"xl/workbook.xml\")) as ExcelXmlWorkbook;\n }\n\n //#endregion\n}\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-wrapper.d.ts","sourceRoot":"","sources":["../src/excel-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,KAAK,CAAC,EAA0E,MAAM,KAAK,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;;;GAIG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAM1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IANlC;;;OAGG;gBAEgB,OAAO,EAAE,CAAC,EACV,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAGpE;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,aAAa,GAAE,MAAM,GAAG,MAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAmDzF;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAoDnF,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;CAMnB"}
|
package/dist/excel-wrapper.js
CHANGED
|
@@ -45,7 +45,7 @@ var __callDispose = (stack, error, hasError) => {
|
|
|
45
45
|
};
|
|
46
46
|
import { DateOnly, DateTime, numParseFloat, Time } from "@simplysm/core-common";
|
|
47
47
|
import { ZodBoolean, ZodDefault, ZodNullable, ZodNumber, ZodOptional, ZodString } from "zod";
|
|
48
|
-
import { ExcelWorkbook } from "./excel-workbook";
|
|
48
|
+
import { ExcelWorkbook } from "./excel-workbook.js";
|
|
49
49
|
class ExcelWrapper {
|
|
50
50
|
/**
|
|
51
51
|
* @param _schema Zod 스키마 (레코드 구조 정의)
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/excel-wrapper.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Bytes } from \"@simplysm/core-common\";\nimport { DateOnly, DateTime, numParseFloat, Time } from \"@simplysm/core-common\";\nimport { type z, ZodBoolean, ZodDefault, ZodNullable, ZodNumber, ZodOptional, ZodString } from \"zod\";\nimport { ExcelWorkbook } from \"./excel-workbook\";\nimport type { ExcelValueType } from \"./types\";\n\n/**\n * Zod \uC2A4\uD0A4\uB9C8 \uAE30\uBC18 Excel \uB798\uD37C\n *\n * \uC2A4\uD0A4\uB9C8\uC5D0\uC11C \uD0C0\uC785 \uC815\uBCF4\uB97C \uCD94\uB860\uD558\uC5EC \uD0C0\uC785 \uC548\uC804\uD55C \uC77D\uAE30/\uC4F0\uAE30 \uC81C\uACF5\n */\nexport class ExcelWrapper<T extends z.ZodObject<z.ZodRawShape>> {\n /**\n * @param _schema Zod \uC2A4\uD0A4\uB9C8 (\uB808\uCF54\uB4DC \uAD6C\uC870 \uC815\uC758)\n * @param _displayNameMap \uD544\uB4DC\uBA85-\uD45C\uC2DC\uBA85 \uB9E4\uD551 (Excel \uD5E4\uB354\uB85C \uC0AC\uC6A9)\n */\n constructor(\n private readonly _schema: T,\n private readonly _displayNameMap: Record<keyof z.infer<T>, string>,\n ) {}\n\n /**\n * Excel \uD30C\uC77C \uC77D\uAE30 \u2192 \uB808\uCF54\uB4DC \uBC30\uC5F4\n */\n async read(file: Bytes | Blob, wsNameOrIndex: string | number = 0): Promise<z.infer<T>[]> {\n await using wb = new ExcelWorkbook(file);\n\n const ws = await wb.getWorksheet(wsNameOrIndex);\n const wsName = await ws.getName();\n\n const displayNames = Object.values(this._displayNameMap);\n const rawData = await ws.getDataTable({\n usableHeaderNameFn: (headerName) => displayNames.includes(headerName),\n });\n\n if (rawData.length === 0) {\n throw new Error(`[${wsName}] \uC5D1\uC140\uD30C\uC77C\uC5D0\uC11C \uB370\uC774\uD130\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. (\uAE30\uB300 \uD5E4\uB354: ${displayNames.join(\", \")})`);\n }\n\n const reverseMap = this._getReverseDisplayNameMap();\n const shape = this._schema.shape;\n const result: z.infer<T>[] = [];\n\n for (const row of rawData) {\n const record: Record<string, unknown> = {};\n let hasNonNullValue = false;\n\n for (const [displayName, fieldKey] of reverseMap) {\n const rawValue = row[displayName];\n const fieldSchema = shape[fieldKey] as z.ZodType;\n\n if (rawValue != null && rawValue !== \"\") {\n hasNonNullValue = true;\n }\n\n record[fieldKey] = this._convertValue(rawValue, fieldSchema);\n }\n\n if (!hasNonNullValue) {\n continue;\n }\n\n // Zod \uC2A4\uD0A4\uB9C8\uB85C \uAC80\uC99D\n const parseResult = this._schema.safeParse(record);\n if (!parseResult.success) {\n const errors = parseResult.error.issues.map((issue) => `${issue.path.join(\".\")}: ${issue.message}`).join(\", \");\n throw new Error(`[${wsName}] \uB370\uC774\uD130 \uAC80\uC99D \uC2E4\uD328: ${errors}`);\n }\n\n result.push(parseResult.data);\n }\n\n return result;\n }\n\n /**\n * \uB808\uCF54\uB4DC \uBC30\uC5F4 \u2192 Excel \uC6CC\uD06C\uBD81\n *\n * @remarks\n * \uBC18\uD658\uB41C \uC6CC\uD06C\uBD81\uC740 \uD638\uCD9C\uC790\uAC00 \uB9AC\uC18C\uC2A4\uB97C \uAD00\uB9AC\uD574\uC57C \uD569\uB2C8\uB2E4.\n * `await using`\uC744 \uC0AC\uC6A9\uD558\uAC70\uB098 \uC791\uC5C5 \uC644\uB8CC \uD6C4 `close()`\uB97C \uD638\uCD9C\uD558\uC138\uC694.\n *\n * @example\n * ```typescript\n * await using wb = await wrapper.write(\"Sheet1\", records);\n * const bytes = await wb.getBytes();\n * ```\n */\n async write(wsName: string, records: Partial<z.infer<T>>[]): Promise<ExcelWorkbook> {\n const wb = new ExcelWorkbook();\n const ws = await wb.createWorksheet(wsName);\n\n const keys = Object.keys(this._displayNameMap) as (keyof z.infer<T>)[];\n const headers = keys.map((key) => this._displayNameMap[key]);\n\n // \uD5E4\uB354 \uD589 \uC791\uC131\n for (let c = 0; c < headers.length; c++) {\n await ws.cell(0, c).setVal(headers[c]);\n }\n\n // \uB370\uC774\uD130 \uD589 \uC791\uC131\n for (let r = 0; r < records.length; r++) {\n for (let c = 0; c < keys.length; c++) {\n const key = keys[c];\n const value = records[r][key] as ExcelValueType;\n await ws.cell(r + 1, c).setVal(value);\n }\n }\n\n // \uD14C\uB450\uB9AC \uC2A4\uD0C0\uC77C \uC801\uC6A9\n for (let r = 0; r < records.length + 1; r++) {\n for (let c = 0; c < keys.length; c++) {\n await ws.cell(r, c).setStyle({\n border: [\"left\", \"right\", \"top\", \"bottom\"],\n });\n }\n }\n\n // \uD544\uC218 \uD544\uB4DC \uD5E4\uB354 \uAC15\uC870 (\uB178\uB780\uC0C9)\n const shape = this._schema.shape;\n for (let c = 0; c < keys.length; c++) {\n const fieldKey = keys[c] as string;\n const fieldSchema = shape[fieldKey] as z.ZodType;\n\n if (this._isRequired(fieldSchema) && !this._isBoolean(fieldSchema)) {\n await ws.cell(0, c).setStyle({\n background: \"00FFFF00\",\n });\n }\n }\n\n // \uBDF0 \uC124\uC815\n await ws.setZoom(85);\n await ws.setFix({ r: 0 });\n\n return wb;\n }\n\n //#region Private Methods\n\n private _getReverseDisplayNameMap(): Map<string, string> {\n const map = new Map<string, string>();\n for (const [fieldKey, displayName] of Object.entries(this._displayNameMap)) {\n map.set(displayName, fieldKey);\n }\n return map;\n }\n\n private _convertValue(rawValue: ExcelValueType, fieldSchema: z.ZodType): unknown {\n if (rawValue == null || rawValue === \"\") {\n return this._getDefaultForSchema(fieldSchema);\n }\n\n const innerSchema = this._unwrapSchema(fieldSchema);\n\n if (innerSchema instanceof ZodString) {\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n }\n\n if (innerSchema instanceof ZodNumber) {\n if (typeof rawValue === \"number\") return rawValue;\n return numParseFloat(String(rawValue));\n }\n\n if (innerSchema instanceof ZodBoolean) {\n if (typeof rawValue === \"boolean\") return rawValue;\n if (rawValue === \"1\" || rawValue === \"true\") return true;\n if (rawValue === \"0\" || rawValue === \"false\") return false;\n return Boolean(rawValue);\n }\n\n // DateOnly, DateTime, Time\uC740 instanceof\uB85C \uCC98\uB9AC\n if (rawValue instanceof DateOnly || rawValue instanceof DateTime || rawValue instanceof Time) {\n return rawValue;\n }\n\n return rawValue;\n }\n\n private _unwrapSchema(schema: z.ZodType): z.ZodType {\n if (schema instanceof ZodOptional || schema instanceof ZodNullable) {\n return this._unwrapSchema(schema.unwrap() as z.ZodType);\n }\n if (schema instanceof ZodDefault) {\n return this._unwrapSchema(schema.removeDefault() as z.ZodType);\n }\n return schema;\n }\n\n private _getDefaultForSchema(schema: z.ZodType): unknown {\n if (schema instanceof ZodDefault) {\n // ZodDefault.parse(undefined)\uB294 \uAE30\uBCF8\uAC12\uC744 \uBC18\uD658\uD568\n return schema.parse(undefined);\n }\n\n if (schema instanceof ZodOptional || schema instanceof ZodNullable) {\n return undefined;\n }\n\n // Boolean \uD544\uC218 \uD544\uB4DC\uC758 \uAE30\uBCF8\uAC12\uC740 false\n const innerSchema = this._unwrapSchema(schema);\n if (innerSchema instanceof ZodBoolean) {\n return false;\n }\n\n return undefined;\n }\n\n private _isRequired(schema: z.ZodType): boolean {\n return !(schema instanceof ZodOptional) && !(schema instanceof ZodNullable) && !(schema instanceof ZodDefault);\n }\n\n private _isBoolean(schema: z.ZodType): boolean {\n const innerSchema = this._unwrapSchema(schema);\n return innerSchema instanceof ZodBoolean;\n }\n\n //#endregion\n}\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AAGpC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from "./types";
|
|
2
|
-
export * from "./utils/excel-utils";
|
|
3
|
-
export * from "./excel-cell";
|
|
4
|
-
export * from "./excel-row";
|
|
5
|
-
export * from "./excel-col";
|
|
6
|
-
export * from "./excel-worksheet";
|
|
7
|
-
export * from "./excel-workbook";
|
|
8
|
-
export * from "./excel-wrapper";
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./utils/excel-utils.js";
|
|
3
|
+
export * from "./excel-cell.js";
|
|
4
|
+
export * from "./excel-row.js";
|
|
5
|
+
export * from "./excel-col.js";
|
|
6
|
+
export * from "./excel-worksheet.js";
|
|
7
|
+
export * from "./excel-workbook.js";
|
|
8
|
+
export * from "./excel-wrapper.js";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// \uD0C0\uC785 \uBC0F \uC720\uD2F8\uB9AC\uD2F0\nexport * from \"./types\";\nexport * from \"./utils/excel-utils\";\n\n// \uD575\uC2EC \uD074\uB798\uC2A4\nexport * from \"./excel-cell\";\nexport * from \"./excel-row\";\nexport * from \"./excel-col\";\nexport * from \"./excel-worksheet\";\nexport * from \"./excel-workbook\";\n\n// \uB798\uD37C \uD074\uB798\uC2A4\nexport * from \"./excel-wrapper\";\n"],
|
|
5
4
|
"mappings": "AACA,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-utils.d.ts","sourceRoot":"","sources":["../../src/utils/excel-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7F;;;GAGG;AACH,qBAAa,UAAU;IACrB,4BAA4B;IAC5B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAMtD,iDAAiD;IACjD,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,6DAA6D;IAC7D,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAe1C,qCAAqC;IACrC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASjD,qCAAqC;IACrC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAYjD,6CAA6C;IAC7C,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAOzD,iEAAiE;IACjE,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB;IAQpE,wBAAwB;IACxB,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM;IAWhE;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQpD;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnD,2BAA2B;IAC3B,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IA0BrE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAkCjE,0BAA0B;IAC1B,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;CAcpE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/excel-utils.ts"],
|
|
4
|
-
"sourcesContent": ["import { numParseInt } from \"@simplysm/core-common\";\nimport type { ExcelAddressPoint, ExcelAddressRangePoint, ExcelNumberFormat } from \"../types\";\n\n/**\n * Excel \uAD00\uB828 \uC720\uD2F8\uB9AC\uD2F0 \uD568\uC218 \uBAA8\uC74C.\n * \uC140 \uC8FC\uC18C \uBCC0\uD658, \uB0A0\uC9DC/\uC22B\uC790 \uBCC0\uD658, \uC22B\uC790 \uD615\uC2DD \uCC98\uB9AC \uB4F1\uC758 \uAE30\uB2A5\uC744 \uC81C\uACF5\uD55C\uB2E4.\n */\nexport class ExcelUtils {\n /** \uC140 \uC88C\uD45C\uB97C \"A1\" \uD615\uC2DD \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658 */\n static stringifyAddr(point: ExcelAddressPoint): string {\n const rowStr = this.stringifyRowAddr(point.r);\n const colStr = this.stringifyColAddr(point.c);\n return `${colStr}${rowStr}`;\n }\n\n /** \uD589 \uC778\uB371\uC2A4(0-based)\uB97C \uD589 \uC8FC\uC18C \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658 (\uC608: 0 -> \"1\") */\n static stringifyRowAddr(r: number): string {\n return (r + 1).toString();\n }\n\n /** \uC5F4 \uC778\uB371\uC2A4(0-based)\uB97C \uC5F4 \uC8FC\uC18C \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658 (\uC608: 0 -> \"A\", 26 -> \"AA\") */\n static stringifyColAddr(c: number): string {\n if (c < 0 || c > 16383) {\n throw new Error(`\uC5F4 \uC778\uB371\uC2A4\uB294 0~16383 \uBC94\uC704\uC5EC\uC57C \uD569\uB2C8\uB2E4: ${c}`);\n }\n\n let remained = c;\n let result = String.fromCharCode((remained % 26) + 65);\n remained = Math.floor(remained / 26);\n while (remained !== 0) {\n result = String.fromCharCode((remained % 26) + 64) + result;\n remained = Math.floor(remained / 26);\n }\n return result;\n }\n\n /** \uC140 \uC8FC\uC18C\uC5D0\uC11C \uD589 \uC778\uB371\uC2A4 \uCD94\uCD9C (\uC608: \"A3\" -> 2) */\n static parseRowAddrCode(addrCode: string): number {\n const rowAddrCode = /\\d*$/.exec(addrCode)?.[0] ?? \"\";\n const parsed = numParseInt(rowAddrCode);\n if (parsed == null) {\n throw new Error(`\uC798\uBABB\uB41C \uD589 \uC8FC\uC18C \uCF54\uB4DC: ${addrCode}`);\n }\n return parsed - 1;\n }\n\n /** \uC140 \uC8FC\uC18C\uC5D0\uC11C \uC5F4 \uC778\uB371\uC2A4 \uCD94\uCD9C (\uC608: \"B3\" -> 1) */\n static parseColAddrCode(addrCode: string): number {\n const colAddrCode = /^[a-zA-Z]*/.exec(addrCode)?.[0] ?? \"\";\n\n let result = 0;\n const revAddr = Array.from(colAddrCode).reverse().join(\"\");\n for (let i = 0; i < revAddr.length; i++) {\n const col = revAddr.charCodeAt(i) - (i === 0 ? 65 : 64);\n result += col * 26 ** i;\n }\n return result;\n }\n\n /** \uC140 \uC8FC\uC18C\uB97C \uC88C\uD45C\uB85C \uBCC0\uD658 (\uC608: \"B3\" -> {r: 2, c: 1}) */\n static parseCellAddrCode(addr: string): ExcelAddressPoint {\n return {\n r: ExcelUtils.parseRowAddrCode(addr),\n c: ExcelUtils.parseColAddrCode(addr),\n };\n }\n\n /** \uBC94\uC704 \uC8FC\uC18C\uB97C \uC88C\uD45C\uB85C \uBCC0\uD658 (\uC608: \"A1:C3\" -> {s: {r:0,c:0}, e: {r:2,c:2}}) */\n static parseRangeAddrCode(rangeAddr: string): ExcelAddressRangePoint {\n const parts = rangeAddr.split(\":\");\n return {\n s: ExcelUtils.parseCellAddrCode(parts[0]),\n e: ExcelUtils.parseCellAddrCode(parts[1] ?? parts[0]),\n };\n }\n\n /** \uBC94\uC704 \uC88C\uD45C\uB97C \uC8FC\uC18C \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658 */\n static stringifyRangeAddr(point: ExcelAddressRangePoint): string {\n const sAddr = this.stringifyAddr(point.s);\n const eAddr = this.stringifyAddr(point.e);\n\n if (sAddr === eAddr) {\n return sAddr;\n } else {\n return sAddr + \":\" + eAddr;\n }\n }\n\n /**\n * JavaScript \uD0C0\uC784\uC2A4\uD0EC\uD504(ms)\uB97C Excel \uB0A0\uC9DC \uC22B\uC790\uB85C \uBCC0\uD658.\n * Excel\uC740 1900-01-01\uC744 1\uB85C \uACC4\uC0B0\uD55C\uB2E4 (1899-12-30\uC774 \uB0A0\uC9DC 0).\n */\n static convertTimeTickToNumber(tick: number): number {\n const currDate = new Date(tick);\n currDate.setMinutes(currDate.getMinutes() - currDate.getTimezoneOffset());\n const excelBaseDateNumberUtc = Date.UTC(1899, 11, 31);\n const inputExcelDateNumberUtc = currDate.getTime() - excelBaseDateNumberUtc;\n return inputExcelDateNumberUtc / (24 * 60 * 60 * 1000) + 1;\n }\n\n /**\n * Excel \uB0A0\uC9DC \uC22B\uC790\uB97C JavaScript \uD0C0\uC784\uC2A4\uD0EC\uD504(ms)\uB85C \uBCC0\uD658.\n * Excel\uC740 1900-01-01\uC744 1\uB85C \uACC4\uC0B0\uD55C\uB2E4 (1899-12-30\uC774 \uB0A0\uC9DC 0).\n */\n static convertNumberToTimeTick(num: number): number {\n const excelBaseDateNumberUtc = Date.UTC(1899, 11, 31);\n const excelDateNumberUtc = (num - 1) * 24 * 60 * 60 * 1000;\n const dateNumberUtc = excelBaseDateNumberUtc + excelDateNumberUtc;\n const date = new Date(dateNumberUtc);\n date.setMinutes(date.getMinutes() + date.getTimezoneOffset());\n return date.getTime();\n }\n\n /** \uC22B\uC790 \uD615\uC2DD \uCF54\uB4DC\uB97C \uD615\uC2DD \uC774\uB984\uC73C\uB85C \uBCC0\uD658 */\n static convertNumFmtCodeToName(numFmtCode: string): ExcelNumberFormat {\n if (numFmtCode === \"General\") {\n return \"number\";\n }\n\n const hasDate = /yy/i.test(numFmtCode) || /dd/i.test(numFmtCode) || /mm/i.test(numFmtCode);\n const hasTime = /hh/i.test(numFmtCode) || /ss/i.test(numFmtCode);\n\n if (hasDate && hasTime) {\n return \"DateTime\"; // \uB0A0\uC9DC+\uC2DC\uAC04 = DateTime\n } else if (hasDate) {\n return \"DateOnly\"; // \uB0A0\uC9DC\uB9CC = DateOnly\n } else if (hasTime) {\n return \"Time\"; // \uC2DC\uAC04\uB9CC = Time\n }\n // \uC22B\uC790 \uD615\uC2DD \uD328\uD134: 0, #, \uC18C\uC218\uC810, \uCC9C\uB2E8\uC704 \uAD6C\uBD84\uC790, \uC74C\uC218 \uAD6C\uBD84\uC790, \uAD04\uD638, \uD1B5\uD654, \uACF5\uBC31, \uC9C0\uC218, \uBC31\uBD84\uC728 \uB4F1\n // \"[\uC870\uAC74\uBD80 \uC11C\uC2DD]\uC2E4\uC81C\uD615\uC2DD\" \uAD6C\uC870\uC5D0\uC11C \uC2E4\uC81C\uD615\uC2DD \uBD80\uBD84\uB9CC \uAC80\uC0AC (split(\"]\").at(-1))\n else if (/^[0.#,_;()\\-\\\\$ @*?\"E%+]*$/.test(numFmtCode.split(\"]\").at(-1) ?? \"\")) {\n return \"number\";\n } else if ((numFmtCode.split(\"]\").at(-1) ?? \"\").includes(\"#,0\")) {\n return \"number\";\n } else {\n throw new Error(`[numFmtCode: ${numFmtCode}]\uC5D0 \uB300\uD55C \uD615\uC2DD\uC744 \uC54C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`);\n }\n }\n\n /**\n * \uC22B\uC790 \uD615\uC2DD ID\uB97C \uD615\uC2DD \uC774\uB984\uC73C\uB85C \uBCC0\uD658\n *\n * @remarks\n * Excel \uB0B4\uC7A5 \uD615\uC2DD ID \uBC94\uC704:\n * - 0~13, 37~40, 48: \uC22B\uC790/\uC77C\uBC18/\uD1B5\uD654/\uBC31\uBD84\uC728 \uD615\uC2DD\n * - 14~17, 27~31, 34~36, 50~58: \uB0A0\uC9DC \uD615\uC2DD (\uC9C0\uC5ED\uD654 \uD3EC\uD568)\n * - 22: \uB0A0\uC9DC+\uC2DC\uAC04 \uD615\uC2DD\n * - 18~21, 32~33, 45~47: \uC2DC\uAC04 \uD615\uC2DD\n * - 49: \uD14D\uC2A4\uD2B8 \uD615\uC2DD\n */\n static convertNumFmtIdToName(numFmtId: number): ExcelNumberFormat {\n // \uC22B\uC790/\uC77C\uBC18/\uD1B5\uD654/\uBC31\uBD84\uC728 \uD615\uC2DD\n if (numFmtId <= 13 || (numFmtId >= 37 && numFmtId <= 40) || numFmtId === 48) {\n return \"number\";\n }\n // \uB0A0\uC9DC \uD615\uC2DD (\uC9C0\uC5ED\uD654 \uD3EC\uD568)\n else if (\n (numFmtId >= 14 && numFmtId <= 17) ||\n (numFmtId >= 27 && numFmtId <= 31) ||\n (numFmtId >= 34 && numFmtId <= 36) ||\n (numFmtId >= 50 && numFmtId <= 58)\n ) {\n return \"DateOnly\";\n }\n // \uB0A0\uC9DC+\uC2DC\uAC04 \uD615\uC2DD\n else if (numFmtId === 22) {\n return \"DateTime\";\n }\n // \uC2DC\uAC04 \uD615\uC2DD\n else if (\n (numFmtId >= 18 && numFmtId <= 21) ||\n (numFmtId >= 32 && numFmtId <= 33) ||\n (numFmtId >= 45 && numFmtId <= 47)\n ) {\n return \"Time\";\n }\n // \uD14D\uC2A4\uD2B8 \uD615\uC2DD\n else if (numFmtId === 49) {\n return \"string\";\n } else {\n throw new Error(`[numFmtId: ${numFmtId}]\uC5D0 \uB300\uD55C \uD615\uC2DD\uC744 \uC54C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`);\n }\n }\n\n /** \uC22B\uC790 \uD615\uC2DD \uC774\uB984\uC744 \uD615\uC2DD ID\uB85C \uBCC0\uD658 */\n static convertNumFmtNameToId(numFmtName: ExcelNumberFormat): number {\n if (numFmtName === \"number\") {\n return 0;\n } else if (numFmtName === \"DateOnly\") {\n return 14;\n } else if (numFmtName === \"DateTime\") {\n return 22;\n } else if (numFmtName === \"Time\") {\n return 18;\n } else {\n // \uB9C8\uC9C0\uB9C9 \uCF00\uC774\uC2A4: \"string\" (TypeScript\uAC00 \uD0C0\uC785 \uC881\uD788\uAE30\uB97C \uD1B5\uD574 \uC790\uB3D9\uC73C\uB85C \uD655\uC778)\n return 49;\n }\n }\n}\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-cache.d.ts","sourceRoot":"","sources":["../../src/utils/zip-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EACV,QAAQ,EAQT,MAAM,UAAU,CAAC;AAUlB;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK;IAIxB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IAsClE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI;IAIhD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;IAgBzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
package/dist/utils/zip-cache.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ZipArchive, xmlStringify, xmlParse } from "@simplysm/core-common";
|
|
2
|
-
import { ExcelXmlContentType } from "../xml/excel-xml-content-type";
|
|
3
|
-
import { ExcelXmlDrawing } from "../xml/excel-xml-drawing";
|
|
4
|
-
import { ExcelXmlRelationship } from "../xml/excel-xml-relationship";
|
|
5
|
-
import { ExcelXmlSharedString } from "../xml/excel-xml-shared-string";
|
|
6
|
-
import { ExcelXmlStyle } from "../xml/excel-xml-style";
|
|
7
|
-
import { ExcelXmlUnknown } from "../xml/excel-xml-unknown";
|
|
8
|
-
import { ExcelXmlWorkbook } from "../xml/excel-xml-workbook";
|
|
9
|
-
import { ExcelXmlWorksheet } from "../xml/excel-xml-worksheet";
|
|
2
|
+
import { ExcelXmlContentType } from "../xml/excel-xml-content-type.js";
|
|
3
|
+
import { ExcelXmlDrawing } from "../xml/excel-xml-drawing.js";
|
|
4
|
+
import { ExcelXmlRelationship } from "../xml/excel-xml-relationship.js";
|
|
5
|
+
import { ExcelXmlSharedString } from "../xml/excel-xml-shared-string.js";
|
|
6
|
+
import { ExcelXmlStyle } from "../xml/excel-xml-style.js";
|
|
7
|
+
import { ExcelXmlUnknown } from "../xml/excel-xml-unknown.js";
|
|
8
|
+
import { ExcelXmlWorkbook } from "../xml/excel-xml-workbook.js";
|
|
9
|
+
import { ExcelXmlWorksheet } from "../xml/excel-xml-worksheet.js";
|
|
10
10
|
class ZipCache {
|
|
11
11
|
_cache = /* @__PURE__ */ new Map();
|
|
12
12
|
_zip;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/zip-cache.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Bytes } from \"@simplysm/core-common\";\nimport { ZipArchive, xmlStringify, xmlParse } from \"@simplysm/core-common\";\nimport type {\n ExcelXml,\n ExcelXmlContentTypeData,\n ExcelXmlDrawingData,\n ExcelXmlRelationshipData,\n ExcelXmlSharedStringData,\n ExcelXmlStyleData,\n ExcelXmlWorkbookData,\n ExcelXmlWorksheetData,\n} from \"../types\";\nimport { ExcelXmlContentType } from \"../xml/excel-xml-content-type\";\nimport { ExcelXmlDrawing } from \"../xml/excel-xml-drawing\";\nimport { ExcelXmlRelationship } from \"../xml/excel-xml-relationship\";\nimport { ExcelXmlSharedString } from \"../xml/excel-xml-shared-string\";\nimport { ExcelXmlStyle } from \"../xml/excel-xml-style\";\nimport { ExcelXmlUnknown } from \"../xml/excel-xml-unknown\";\nimport { ExcelXmlWorkbook } from \"../xml/excel-xml-workbook\";\nimport { ExcelXmlWorksheet } from \"../xml/excel-xml-worksheet\";\n\n/**\n * Excel ZIP \uC544\uCE74\uC774\uBE0C\uC758 \uD30C\uC77C \uCE90\uC2DC\uB97C \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * XML \uD30C\uC77C\uC740 \uD30C\uC2F1\uD558\uC5EC ExcelXml \uAC1D\uCCB4\uB85C, \uADF8 \uC678 \uD30C\uC77C\uC740 \uBC14\uC774\uD2B8 \uBC30\uC5F4\uB85C \uCE90\uC2F1\uD55C\uB2E4.\n *\n * @remarks\n * ## Lazy Loading \uCE90\uC2DC \uC804\uB7B5\n *\n * - \uD30C\uC77C\uC740 \uCCAB \uC811\uADFC \uC2DC\uC5D0\uB9CC ZIP\uC5D0\uC11C \uC77D\uACE0 \uD30C\uC2F1\uD55C\uB2E4\n * - \uC774\uD6C4 \uC811\uADFC\uC740 \uCE90\uC2DC\uB41C \uAC1D\uCCB4\uB97C \uBC18\uD658\uD55C\uB2E4\n * - \uB300\uC6A9\uB7C9 Excel \uD30C\uC77C\uC5D0\uC11C \uD544\uC694\uD55C \uBD80\uBD84\uB9CC \uB85C\uB4DC\uD558\uC5EC \uBA54\uBAA8\uB9AC \uD6A8\uC728\uC131\uC744 \uB192\uC778\uB2E4\n */\nexport class ZipCache {\n private readonly _cache = new Map<string, ExcelXml | Bytes | undefined>();\n private readonly _zip: ZipArchive;\n\n constructor(arg?: Blob | Bytes) {\n this._zip = new ZipArchive(arg);\n }\n\n async get(filePath: string): Promise<ExcelXml | Bytes | undefined> {\n if (this._cache.has(filePath)) {\n return this._cache.get(filePath);\n }\n\n const fileData = await this._zip.get(filePath);\n if (fileData == null) {\n this._cache.set(filePath, undefined);\n return undefined;\n }\n\n if (filePath.endsWith(\".xml\") || filePath.endsWith(\".rels\")) {\n const fileText = new TextDecoder().decode(fileData);\n const xml = xmlParse(fileText, { stripTagPrefix: true });\n if (filePath.endsWith(\".rels\")) {\n this._cache.set(filePath, new ExcelXmlRelationship(xml as ExcelXmlRelationshipData));\n } else if (filePath === \"[Content_Types].xml\") {\n this._cache.set(filePath, new ExcelXmlContentType(xml as ExcelXmlContentTypeData));\n } else if (filePath === \"xl/workbook.xml\") {\n this._cache.set(filePath, new ExcelXmlWorkbook(xml as ExcelXmlWorkbookData));\n } else if (filePath.startsWith(\"xl/worksheets/sheet\") && filePath.endsWith(\".xml\")) {\n this._cache.set(filePath, new ExcelXmlWorksheet(xml as ExcelXmlWorksheetData));\n } else if (filePath.startsWith(\"xl/drawings/drawing\") && filePath.endsWith(\".xml\")) {\n this._cache.set(filePath, new ExcelXmlDrawing(xml as ExcelXmlDrawingData));\n } else if (filePath === \"xl/sharedStrings.xml\") {\n this._cache.set(filePath, new ExcelXmlSharedString(xml as ExcelXmlSharedStringData));\n } else if (filePath === \"xl/styles.xml\") {\n this._cache.set(filePath, new ExcelXmlStyle(xml as ExcelXmlStyleData));\n } else {\n this._cache.set(filePath, new ExcelXmlUnknown(xml as Record<string, unknown>));\n }\n } else {\n this._cache.set(filePath, fileData);\n }\n\n return this._cache.get(filePath);\n }\n\n set(filePath: string, content: ExcelXml | Bytes): void {\n this._cache.set(filePath, content);\n }\n\n async toBytes(): Promise<Bytes> {\n for (const filePath of this._cache.keys()) {\n const content = this._cache.get(filePath);\n if (content == null) continue;\n\n if (\"cleanup\" in content) {\n content.cleanup();\n this._zip.write(filePath, new TextEncoder().encode(xmlStringify(content.data)));\n } else {\n this._zip.write(filePath, content);\n }\n }\n\n return this._zip.compress();\n }\n\n async close(): Promise<void> {\n await this._zip.close();\n this._cache.clear();\n }\n}\n"],
|
|
5
4
|
"mappings": "AACA,SAAS,YAAY,cAAc,gBAAgB;AAWnD,SAAS,2BAA2B;AACpC,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAa3B,MAAM,SAAS;AAAA,EACH,SAAS,oBAAI,IAA0C;AAAA,EACvD;AAAA,EAEjB,YAAY,KAAoB;AAC9B,SAAK,OAAO,IAAI,WAAW,GAAG;AAAA,EAChC;AAAA,EAEA,MAAM,IAAI,UAAyD;AACjE,QAAI,KAAK,OAAO,IAAI,QAAQ,GAAG;AAC7B,aAAO,KAAK,OAAO,IAAI,QAAQ;AAAA,IACjC;AAEA,UAAM,WAAW,MAAM,KAAK,KAAK,IAAI,QAAQ;AAC7C,QAAI,YAAY,MAAM;AACpB,WAAK,OAAO,IAAI,UAAU,MAAS;AACnC,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,OAAO,GAAG;AAC3D,YAAM,WAAW,IAAI,YAAY,EAAE,OAAO,QAAQ;AAClD,YAAM,MAAM,SAAS,UAAU,EAAE,gBAAgB,KAAK,CAAC;AACvD,UAAI,SAAS,SAAS,OAAO,GAAG;AAC9B,aAAK,OAAO,IAAI,UAAU,IAAI,qBAAqB,GAA+B,CAAC;AAAA,MACrF,WAAW,aAAa,uBAAuB;AAC7C,aAAK,OAAO,IAAI,UAAU,IAAI,oBAAoB,GAA8B,CAAC;AAAA,MACnF,WAAW,aAAa,mBAAmB;AACzC,aAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB,GAA2B,CAAC;AAAA,MAC7E,WAAW,SAAS,WAAW,qBAAqB,KAAK,SAAS,SAAS,MAAM,GAAG;AAClF,aAAK,OAAO,IAAI,UAAU,IAAI,kBAAkB,GAA4B,CAAC;AAAA,MAC/E,WAAW,SAAS,WAAW,qBAAqB,KAAK,SAAS,SAAS,MAAM,GAAG;AAClF,aAAK,OAAO,IAAI,UAAU,IAAI,gBAAgB,GAA0B,CAAC;AAAA,MAC3E,WAAW,aAAa,wBAAwB;AAC9C,aAAK,OAAO,IAAI,UAAU,IAAI,qBAAqB,GAA+B,CAAC;AAAA,MACrF,WAAW,aAAa,iBAAiB;AACvC,aAAK,OAAO,IAAI,UAAU,IAAI,cAAc,GAAwB,CAAC;AAAA,MACvE,OAAO;AACL,aAAK,OAAO,IAAI,UAAU,IAAI,gBAAgB,GAA8B,CAAC;AAAA,MAC/E;AAAA,IACF,OAAO;AACL,WAAK,OAAO,IAAI,UAAU,QAAQ;AAAA,IACpC;AAEA,WAAO,KAAK,OAAO,IAAI,QAAQ;AAAA,EACjC;AAAA,EAEA,IAAI,UAAkB,SAAiC;AACrD,SAAK,OAAO,IAAI,UAAU,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,UAA0B;AAC9B,eAAW,YAAY,KAAK,OAAO,KAAK,GAAG;AACzC,YAAM,UAAU,KAAK,OAAO,IAAI,QAAQ;AACxC,UAAI,WAAW,KAAM;AAErB,UAAI,aAAa,SAAS;AACxB,gBAAQ,QAAQ;AAChB,aAAK,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,OAAO,aAAa,QAAQ,IAAI,CAAC,CAAC;AAAA,MAChF,OAAO;AACL,aAAK,KAAK,MAAM,UAAU,OAAO;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,KAAK,SAAS;AAAA,EAC5B;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,KAAK,KAAK,MAAM;AACtB,SAAK,OAAO,MAAM;AAAA,EACpB;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-xml-content-type.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-content-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAElE;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAClD,IAAI,EAAE,uBAAuB,CAAC;gBAElB,IAAI,CAAC,EAAE,uBAAuB;IAoC1C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAiBhD,OAAO,IAAI,IAAI;CAChB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/xml/excel-xml-content-type.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ExcelXml, ExcelXmlContentTypeData } from \"../types\";\n\n/**\n * [Content_Types].xml \uD30C\uC77C\uC744 \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * \uD30C\uC77C\uBCC4 MIME \uD0C0\uC785 \uC815\uBCF4\uB97C \uAD00\uB9AC\uD55C\uB2E4.\n */\nexport class ExcelXmlContentType implements ExcelXml {\n data: ExcelXmlContentTypeData;\n\n constructor(data?: ExcelXmlContentTypeData) {\n if (data == null) {\n this.data = {\n Types: {\n $: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\",\n },\n Default: [\n {\n $: {\n Extension: \"rels\",\n ContentType: \"application/vnd.openxmlformats-package.relationships+xml\",\n },\n },\n {\n $: {\n Extension: \"xml\",\n ContentType: \"application/xml\",\n },\n },\n ],\n Override: [\n {\n $: {\n PartName: \"/xl/workbook.xml\",\n ContentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n },\n },\n ],\n },\n };\n } else {\n this.data = data;\n }\n }\n\n add(partName: string, contentType: string): this {\n // \uC911\uBCF5 \uCCB4\uD06C\n const exists = this.data.Types.Override.some((item) => item.$.PartName === partName);\n if (exists) {\n return this;\n }\n\n this.data.Types.Override.push({\n $: {\n PartName: partName,\n ContentType: contentType,\n },\n });\n\n return this;\n }\n\n cleanup(): void {}\n}\n"],
|
|
5
4
|
"mappings": "AAMO,MAAM,oBAAwC;AAAA,EACnD;AAAA,EAEA,YAAY,MAAgC;AAC1C,QAAI,QAAQ,MAAM;AAChB,WAAK,OAAO;AAAA,QACV,OAAO;AAAA,UACL,GAAG;AAAA,YACD,OAAO;AAAA,UACT;AAAA,UACA,SAAS;AAAA,YACP;AAAA,cACE,GAAG;AAAA,gBACD,WAAW;AAAA,gBACX,aAAa;AAAA,cACf;AAAA,YACF;AAAA,YACA;AAAA,cACE,GAAG;AAAA,gBACD,WAAW;AAAA,gBACX,aAAa;AAAA,cACf;AAAA,YACF;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE,GAAG;AAAA,gBACD,UAAU;AAAA,gBACV,aAAa;AAAA,cACf;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,IAAI,UAAkB,aAA2B;AAE/C,UAAM,SAAS,KAAK,KAAK,MAAM,SAAS,KAAK,CAAC,SAAS,KAAK,EAAE,aAAa,QAAQ;AACnF,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,SAAK,KAAK,MAAM,SAAS,KAAK;AAAA,MAC5B,GAAG;AAAA,QACD,UAAU;AAAA,QACV,aAAa;AAAA,MACf;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,UAAgB;AAAA,EAAC;AACnB;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-xml-drawing.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-drawing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,IAAI,EAAE,mBAAmB,CAAC;gBAEd,IAAI,CAAC,EAAE,mBAAmB;IAiBtC,UAAU,CAAC,IAAI,EAAE;QACf,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC/E,EAAE,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC7E,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI;IAuDR,OAAO,IAAI,IAAI;CAChB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/xml/excel-xml-drawing.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ExcelXml, ExcelXmlDrawingData } from \"../types\";\n\n/**\n * xl/drawings/drawing*.xml \uD30C\uC77C\uC744 \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * \uC774\uBBF8\uC9C0 \uC0BD\uC785 \uC2DC \uC704\uCE58 \uBC0F \uCC38\uC870 \uC815\uBCF4\uB97C \uCC98\uB9AC\uD55C\uB2E4.\n */\nexport class ExcelXmlDrawing implements ExcelXml {\n data: ExcelXmlDrawingData;\n\n constructor(data?: ExcelXmlDrawingData) {\n if (data == null) {\n this.data = {\n wsDr: {\n $: {\n \"xmlns\": \"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\",\n \"xmlns:a\": \"http://schemas.openxmlformats.org/drawingml/2006/main\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n },\n twoCellAnchor: [],\n },\n };\n } else {\n this.data = data;\n }\n }\n\n addPicture(opts: {\n from: { r: number; c: number; rOff?: number | string; cOff?: number | string };\n to: { r: number; c: number; rOff?: number | string; cOff?: number | string };\n blipRelId: string;\n }): void {\n this.data.wsDr.twoCellAnchor = this.data.wsDr.twoCellAnchor ?? [];\n\n const anchors = this.data.wsDr.twoCellAnchor;\n const picId = anchors.length + 1;\n const name = `Picture ${picId}`;\n\n this.data.wsDr.twoCellAnchor.push({\n from: [\n {\n col: [opts.from.c.toString()],\n colOff: [opts.from.cOff != null ? opts.from.cOff.toString() : \"0\"],\n row: [opts.from.r.toString()],\n rowOff: [opts.from.rOff != null ? opts.from.rOff.toString() : \"0\"],\n },\n ],\n to: [\n {\n col: [opts.to.c.toString()],\n colOff: [opts.to.cOff != null ? opts.to.cOff.toString() : \"0\"],\n row: [opts.to.r.toString()],\n rowOff: [opts.to.rOff != null ? opts.to.rOff.toString() : \"0\"],\n },\n ],\n pic: [\n {\n nvPicPr: [\n {\n cNvPr: [{ $: { id: picId.toString(), name } }],\n cNvPicPr: [{ \"a:picLocks\": [{ $: { noChangeAspect: \"1\" } }] }],\n },\n ],\n blipFill: [\n {\n \"a:blip\": [{ $: { \"r:embed\": opts.blipRelId } }],\n \"a:stretch\": [{ \"a:fillRect\": [] }],\n },\n ],\n spPr: [\n {\n \"a:xfrm\": [\n {\n \"a:off\": [{ $: { x: \"0\", y: \"0\" } }],\n \"a:ext\": [{ $: { cx: \"0\", cy: \"0\" } }],\n },\n ],\n \"a:prstGeom\": [{ \"$\": { prst: \"rect\" }, \"a:avLst\": [] }],\n },\n ],\n },\n ],\n clientData: [{}],\n });\n }\n\n cleanup(): void {}\n}\n"],
|
|
5
4
|
"mappings": "AAMO,MAAM,gBAAoC;AAAA,EAC/C;AAAA,EAEA,YAAY,MAA4B;AACtC,QAAI,QAAQ,MAAM;AAChB,WAAK,OAAO;AAAA,QACV,MAAM;AAAA,UACJ,GAAG;AAAA,YACD,SAAS;AAAA,YACT,WAAW;AAAA,YACX,WAAW;AAAA,UACb;AAAA,UACA,eAAe,CAAC;AAAA,QAClB;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,WAAW,MAIF;AACP,SAAK,KAAK,KAAK,gBAAgB,KAAK,KAAK,KAAK,iBAAiB,CAAC;AAEhE,UAAM,UAAU,KAAK,KAAK,KAAK;AAC/B,UAAM,QAAQ,QAAQ,SAAS;AAC/B,UAAM,OAAO,WAAW,KAAK;AAE7B,SAAK,KAAK,KAAK,cAAc,KAAK;AAAA,MAChC,MAAM;AAAA,QACJ;AAAA,UACE,KAAK,CAAC,KAAK,KAAK,EAAE,SAAS,CAAC;AAAA,UAC5B,QAAQ,CAAC,KAAK,KAAK,QAAQ,OAAO,KAAK,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,UACjE,KAAK,CAAC,KAAK,KAAK,EAAE,SAAS,CAAC;AAAA,UAC5B,QAAQ,CAAC,KAAK,KAAK,QAAQ,OAAO,KAAK,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,QACnE;AAAA,MACF;AAAA,MACA,IAAI;AAAA,QACF;AAAA,UACE,KAAK,CAAC,KAAK,GAAG,EAAE,SAAS,CAAC;AAAA,UAC1B,QAAQ,CAAC,KAAK,GAAG,QAAQ,OAAO,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG;AAAA,UAC7D,KAAK,CAAC,KAAK,GAAG,EAAE,SAAS,CAAC;AAAA,UAC1B,QAAQ,CAAC,KAAK,GAAG,QAAQ,OAAO,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG;AAAA,QAC/D;AAAA,MACF;AAAA,MACA,KAAK;AAAA,QACH;AAAA,UACE,SAAS;AAAA,YACP;AAAA,cACE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;AAAA,cAC7C,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC;AAAA,YAC/D;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE,UAAU,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,UAAU,EAAE,CAAC;AAAA,cAC/C,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC;AAAA,YACpC;AAAA,UACF;AAAA,UACA,MAAM;AAAA,YACJ;AAAA,cACE,UAAU;AAAA,gBACR;AAAA,kBACE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;AAAA,kBACnC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;AAAA,gBACvC;AAAA,cACF;AAAA,cACA,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC;AAAA,YACzD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,YAAY,CAAC,CAAC,CAAC;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,UAAgB;AAAA,EAAC;AACnB;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-xml-relationship.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-relationship.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAyB,QAAQ,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAE1F;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,IAAI,EAAE,wBAAwB,CAAC;gBAEnB,IAAI,CAAC,EAAE,wBAAwB;IAc3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAgBjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAmBvD,OAAO,IAAI,IAAI;IAEf,OAAO,KAAK,OAAO,GAKlB;IAED,OAAO,CAAC,SAAS;CAOlB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/xml/excel-xml-relationship.ts"],
|
|
4
|
-
"sourcesContent": ["import \"@simplysm/core-common\";\nimport { numParseInt } from \"@simplysm/core-common\";\nimport type { ExcelRelationshipData, ExcelXml, ExcelXmlRelationshipData } from \"../types\";\n\n/**\n * *.rels \uD30C\uC77C\uC744 \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * \uD30C\uC77C \uAC04\uC758 \uCC38\uC870 \uAD00\uACC4\uB97C \uCC98\uB9AC\uD55C\uB2E4.\n */\nexport class ExcelXmlRelationship implements ExcelXml {\n data: ExcelXmlRelationshipData;\n\n constructor(data?: ExcelXmlRelationshipData) {\n if (data == null) {\n this.data = {\n Relationships: {\n $: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\",\n },\n },\n };\n } else {\n this.data = data;\n }\n }\n\n getTargetByRelId(rId: number): string | undefined {\n return (this.data.Relationships.Relationship ?? []).single((rel) => this._getRelId(rel) === rId)?.$.Target;\n }\n\n add(target: string, type: string): this {\n this.addAndGetId(target, type);\n return this;\n }\n\n addAndGetId(target: string, type: string): number {\n this.data.Relationships.Relationship = this.data.Relationships.Relationship ?? [];\n\n const newId = (this._lastId ?? 0) + 1;\n\n this.data.Relationships.Relationship.push({\n $: {\n Id: `rId${newId}`,\n Target: target,\n Type: type,\n },\n });\n\n return newId;\n }\n\n insert(rId: number, target: string, type: string): this {\n this.data.Relationships.Relationship = this.data.Relationships.Relationship ?? [];\n\n const shiftRels = this.data.Relationships.Relationship.filter((rel) => this._getRelId(rel) >= rId);\n for (const shiftRel of shiftRels) {\n shiftRel.$.Id = `rId${this._getRelId(shiftRel) + 1}`;\n }\n\n this.data.Relationships.Relationship.push({\n $: {\n Id: `rId${rId}`,\n Target: target,\n Type: type,\n },\n });\n\n return this;\n }\n\n cleanup(): void {}\n\n private get _lastId(): number | undefined {\n const rels = this.data.Relationships.Relationship;\n if (!rels || rels.length === 0) return undefined;\n const maxRel = rels.orderByDesc((rel) => this._getRelId(rel)).first();\n return maxRel ? this._getRelId(maxRel) : undefined;\n }\n\n private _getRelId(rel: ExcelRelationshipData): number {\n const match = /[0-9]+$/.exec(rel.$.Id);\n if (match == null) {\n throw new Error(`\uC798\uBABB\uB41C \uAD00\uACC4 ID \uD615\uC2DD\uC785\uB2C8\uB2E4: ${rel.$.Id}`);\n }\n return numParseInt(match[0])!;\n }\n}\n"],
|
|
5
4
|
"mappings": "AAAA,OAAO;AACP,SAAS,mBAAmB;AAOrB,MAAM,qBAAyC;AAAA,EACpD;AAAA,EAEA,YAAY,MAAiC;AAC3C,QAAI,QAAQ,MAAM;AAChB,WAAK,OAAO;AAAA,QACV,eAAe;AAAA,UACb,GAAG;AAAA,YACD,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,iBAAiB,KAAiC;AAzBpD;AA0BI,YAAQ,WAAK,KAAK,cAAc,gBAAgB,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,UAAU,GAAG,MAAM,GAAG,MAAvF,mBAA0F,EAAE;AAAA,EACtG;AAAA,EAEA,IAAI,QAAgB,MAAoB;AACtC,SAAK,YAAY,QAAQ,IAAI;AAC7B,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,QAAgB,MAAsB;AAChD,SAAK,KAAK,cAAc,eAAe,KAAK,KAAK,cAAc,gBAAgB,CAAC;AAEhF,UAAM,SAAS,KAAK,WAAW,KAAK;AAEpC,SAAK,KAAK,cAAc,aAAa,KAAK;AAAA,MACxC,GAAG;AAAA,QACD,IAAI,MAAM,KAAK;AAAA,QACf,QAAQ;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAa,QAAgB,MAAoB;AACtD,SAAK,KAAK,cAAc,eAAe,KAAK,KAAK,cAAc,gBAAgB,CAAC;AAEhF,UAAM,YAAY,KAAK,KAAK,cAAc,aAAa,OAAO,CAAC,QAAQ,KAAK,UAAU,GAAG,KAAK,GAAG;AACjG,eAAW,YAAY,WAAW;AAChC,eAAS,EAAE,KAAK,MAAM,KAAK,UAAU,QAAQ,IAAI,CAAC;AAAA,IACpD;AAEA,SAAK,KAAK,cAAc,aAAa,KAAK;AAAA,MACxC,GAAG;AAAA,QACD,IAAI,MAAM,GAAG;AAAA,QACb,QAAQ;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,UAAgB;AAAA,EAAC;AAAA,EAEjB,IAAY,UAA8B;AACxC,UAAM,OAAO,KAAK,KAAK,cAAc;AACrC,QAAI,CAAC,QAAQ,KAAK,WAAW,EAAG,QAAO;AACvC,UAAM,SAAS,KAAK,YAAY,CAAC,QAAQ,KAAK,UAAU,GAAG,CAAC,EAAE,MAAM;AACpE,WAAO,SAAS,KAAK,UAAU,MAAM,IAAI;AAAA,EAC3C;AAAA,EAEQ,UAAU,KAAoC;AACpD,UAAM,QAAQ,UAAU,KAAK,IAAI,EAAE,EAAE;AACrC,QAAI,SAAS,MAAM;AACjB,YAAM,IAAI,MAAM,sEAAoB,IAAI,EAAE,EAAE,EAAE;AAAA,IAChD;AACA,WAAO,YAAY,MAAM,CAAC,CAAC;AAAA,EAC7B;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-xml-shared-string.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-shared-string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,wBAAwB,EAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,IAAI,EAAE,wBAAwB,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwB;gBAE9C,IAAI,CAAC,EAAE,wBAAwB;IAwB3C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQxB,OAAO,IAAI,IAAI;IAEf,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,wBAAwB;CAGjC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/xml/excel-xml-shared-string.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n ExcelXml,\n ExcelXmlSharedStringData,\n ExcelXmlSharedStringDataSi,\n ExcelXmlSharedStringDataText,\n} from \"../types\";\nimport \"@simplysm/core-common\";\n\n/**\n * xl/sharedStrings.xml \uD30C\uC77C\uC744 \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * \uBB38\uC790\uC5F4 \uC911\uBCF5\uC744 \uBC29\uC9C0\uD558\uC5EC \uD30C\uC77C \uD06C\uAE30\uB97C \uCD5C\uC801\uD654\uD55C\uB2E4.\n */\nexport class ExcelXmlSharedString implements ExcelXml {\n data: ExcelXmlSharedStringData;\n\n private readonly _stringIndexesMap: Map<string, number[]>;\n\n constructor(data?: ExcelXmlSharedStringData) {\n if (data === undefined) {\n this.data = {\n sst: {\n $: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\n },\n },\n };\n } else {\n this.data = data;\n }\n\n this._stringIndexesMap = this.data.sst.si\n ? this.data.sst.si\n .map((tag, id) => ({ id, tag }))\n .filter((item) => !this._getHasInnerStyleOnSiTag(item.tag))\n .toArrayMap(\n (item) => this._getStringFromSiTag(item.tag),\n (item) => item.id,\n )\n : new Map<string, number[]>();\n }\n\n getIdByString(str: string): number | undefined {\n return this._stringIndexesMap.get(str)?.[0];\n }\n\n getStringById(id: number): string | undefined {\n const si = this.data.sst.si?.[id];\n return si != null ? this._getStringFromSiTag(si) : undefined;\n }\n\n add(str: string): number {\n this.data.sst.si = this.data.sst.si ?? [];\n const newLength = this.data.sst.si.push({ t: [str] });\n const arr = this._stringIndexesMap.getOrCreate(str, []);\n arr.push(newLength - 1);\n return newLength - 1;\n }\n\n cleanup(): void {}\n\n private _getStringFromSiTag(si: ExcelXmlSharedStringDataSi): string {\n if (\"t\" in si) {\n return this._getStringFromTTag(si.t);\n } else {\n return si.r.map((item) => this._getStringFromTTag(item.t)).join(\"\");\n }\n }\n\n private _getStringFromTTag(t: ExcelXmlSharedStringDataText): string {\n const firstItem = t[0];\n if (typeof firstItem === \"string\") {\n return firstItem;\n }\n return firstItem._ ?? \" \";\n }\n\n private _getHasInnerStyleOnSiTag(si: ExcelXmlSharedStringDataSi): boolean {\n return Object.keys(si).some((item) => item !== \"t\");\n }\n}\n"],
|
|
5
4
|
"mappings": "AAMA,OAAO;AAMA,MAAM,qBAAyC;AAAA,EACpD;AAAA,EAEiB;AAAA,EAEjB,YAAY,MAAiC;AAC3C,QAAI,SAAS,QAAW;AACtB,WAAK,OAAO;AAAA,QACV,KAAK;AAAA,UACH,GAAG;AAAA,YACD,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,OAAO;AAAA,IACd;AAEA,SAAK,oBAAoB,KAAK,KAAK,IAAI,KACnC,KAAK,KAAK,IAAI,GACX,IAAI,CAAC,KAAK,QAAQ,EAAE,IAAI,IAAI,EAAE,EAC9B,OAAO,CAAC,SAAS,CAAC,KAAK,yBAAyB,KAAK,GAAG,CAAC,EACzD;AAAA,MACC,CAAC,SAAS,KAAK,oBAAoB,KAAK,GAAG;AAAA,MAC3C,CAAC,SAAS,KAAK;AAAA,IACjB,IACF,oBAAI,IAAsB;AAAA,EAChC;AAAA,EAEA,cAAc,KAAiC;AAzCjD;AA0CI,YAAO,UAAK,kBAAkB,IAAI,GAAG,MAA9B,mBAAkC;AAAA,EAC3C;AAAA,EAEA,cAAc,IAAgC;AA7ChD;AA8CI,UAAM,MAAK,UAAK,KAAK,IAAI,OAAd,mBAAmB;AAC9B,WAAO,MAAM,OAAO,KAAK,oBAAoB,EAAE,IAAI;AAAA,EACrD;AAAA,EAEA,IAAI,KAAqB;AACvB,SAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC;AACxC,UAAM,YAAY,KAAK,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACpD,UAAM,MAAM,KAAK,kBAAkB,YAAY,KAAK,CAAC,CAAC;AACtD,QAAI,KAAK,YAAY,CAAC;AACtB,WAAO,YAAY;AAAA,EACrB;AAAA,EAEA,UAAgB;AAAA,EAAC;AAAA,EAET,oBAAoB,IAAwC;AAClE,QAAI,OAAO,IAAI;AACb,aAAO,KAAK,mBAAmB,GAAG,CAAC;AAAA,IACrC,OAAO;AACL,aAAO,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,mBAAmB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE;AAAA,IACpE;AAAA,EACF;AAAA,EAEQ,mBAAmB,GAAyC;AAClE,UAAM,YAAY,EAAE,CAAC;AACrB,QAAI,OAAO,cAAc,UAAU;AACjC,aAAO;AAAA,IACT;AACA,WAAO,UAAU,KAAK;AAAA,EACxB;AAAA,EAEQ,yBAAyB,IAAyC;AACxE,WAAO,OAAO,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,SAAS,GAAG;AAAA,EACpD;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-xml-style.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAClB,OAAO,uBAAuB,CAAC;AAG/B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED;;;GAGG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC5C,IAAI,EAAE,iBAAiB,CAAC;gBAEZ,IAAI,CAAC,EAAE,iBAAiB;IAyCpC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAqC9B,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM;IA4EnD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU;IA4D3B,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKnD,OAAO,IAAI,IAAI;IAsBf,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,sBAAsB;CAa/B"}
|