@simplysm/excel 1.0.138 → 13.0.0-beta.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/.cache/typecheck-browser.tsbuildinfo +1 -0
- package/.cache/typecheck-node.tsbuildinfo +1 -0
- package/.cache/typecheck-tests-browser.tsbuildinfo +1 -0
- package/.cache/typecheck-tests-node.tsbuildinfo +1 -0
- package/README.md +491 -0
- package/dist/core-common/src/common.types.d.ts +74 -0
- package/dist/core-common/src/common.types.d.ts.map +1 -0
- package/dist/core-common/src/env.d.ts +6 -0
- package/dist/core-common/src/env.d.ts.map +1 -0
- package/dist/core-common/src/errors/argument-error.d.ts +25 -0
- package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/sd-error.d.ts +27 -0
- package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
- package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
- package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
- package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
- package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
- package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
- package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
- package/dist/core-common/src/features/event-emitter.d.ts +66 -0
- package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
- package/dist/core-common/src/features/serial-queue.d.ts +47 -0
- package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
- package/dist/core-common/src/index.d.ts +32 -0
- package/dist/core-common/src/index.d.ts.map +1 -0
- package/dist/core-common/src/types/date-only.d.ts +152 -0
- package/dist/core-common/src/types/date-only.d.ts.map +1 -0
- package/dist/core-common/src/types/date-time.d.ts +96 -0
- package/dist/core-common/src/types/date-time.d.ts.map +1 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
- package/dist/core-common/src/types/time.d.ts +68 -0
- package/dist/core-common/src/types/time.d.ts.map +1 -0
- package/dist/core-common/src/types/uuid.d.ts +35 -0
- package/dist/core-common/src/types/uuid.d.ts.map +1 -0
- package/dist/core-common/src/utils/bytes.d.ts +51 -0
- package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
- package/dist/core-common/src/utils/date-format.d.ts +90 -0
- package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
- package/dist/core-common/src/utils/json.d.ts +34 -0
- package/dist/core-common/src/utils/json.d.ts.map +1 -0
- package/dist/core-common/src/utils/num.d.ts +60 -0
- package/dist/core-common/src/utils/num.d.ts.map +1 -0
- package/dist/core-common/src/utils/obj.d.ts +258 -0
- package/dist/core-common/src/utils/obj.d.ts.map +1 -0
- package/dist/core-common/src/utils/path.d.ts +23 -0
- package/dist/core-common/src/utils/path.d.ts.map +1 -0
- package/dist/core-common/src/utils/primitive.d.ts +18 -0
- package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
- package/dist/core-common/src/utils/str.d.ts +103 -0
- package/dist/core-common/src/utils/str.d.ts.map +1 -0
- package/dist/core-common/src/utils/template-strings.d.ts +84 -0
- package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
- package/dist/core-common/src/utils/transferable.d.ts +47 -0
- package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
- package/dist/core-common/src/utils/wait.d.ts +19 -0
- package/dist/core-common/src/utils/wait.d.ts.map +1 -0
- package/dist/core-common/src/utils/xml.d.ts +36 -0
- package/dist/core-common/src/utils/xml.d.ts.map +1 -0
- package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
- package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
- package/dist/excel/src/excel-cell.d.ts +68 -0
- package/dist/excel/src/excel-cell.d.ts.map +1 -0
- package/dist/excel/src/excel-col.d.ts +19 -0
- package/dist/excel/src/excel-col.d.ts.map +1 -0
- package/dist/excel/src/excel-row.d.ts +17 -0
- package/dist/excel/src/excel-row.d.ts.map +1 -0
- package/dist/excel/src/excel-workbook.d.ts +66 -0
- package/dist/excel/src/excel-workbook.d.ts.map +1 -0
- package/dist/excel/src/excel-worksheet.d.ts +102 -0
- package/dist/excel/src/excel-worksheet.d.ts.map +1 -0
- package/dist/excel/src/excel-wrapper.d.ts +42 -0
- package/dist/excel/src/excel-wrapper.d.ts.map +1 -0
- package/dist/excel/src/index.d.ts +9 -0
- package/dist/excel/src/index.d.ts.map +1 -0
- package/dist/excel/src/types.d.ts +445 -0
- package/dist/excel/src/types.d.ts.map +1 -0
- package/dist/excel/src/utils/excel-utils.d.ts +50 -0
- package/dist/excel/src/utils/excel-utils.d.ts.map +1 -0
- package/dist/excel/src/utils/zip-cache.d.ts +23 -0
- package/dist/excel/src/utils/zip-cache.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-content-type.d.ts +12 -0
- package/dist/excel/src/xml/excel-xml-content-type.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-drawing.d.ts +26 -0
- package/dist/excel/src/xml/excel-xml-drawing.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-relationship.d.ts +18 -0
- package/dist/excel/src/xml/excel-xml-relationship.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-shared-string.d.ts +19 -0
- package/dist/excel/src/xml/excel-xml-shared-string.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-style.d.ts +31 -0
- package/dist/excel/src/xml/excel-xml-style.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-unknown.d.ts +11 -0
- package/dist/excel/src/xml/excel-xml-unknown.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-workbook.d.ts +22 -0
- package/dist/excel/src/xml/excel-xml-workbook.d.ts.map +1 -0
- package/dist/excel/src/xml/excel-xml-worksheet.d.ts +103 -0
- package/dist/excel/src/xml/excel-xml-worksheet.d.ts.map +1 -0
- package/dist/excel-cell.js +261 -0
- package/dist/excel-cell.js.map +7 -0
- package/dist/excel-col.js +36 -0
- package/dist/excel-col.js.map +7 -0
- package/dist/excel-row.js +31 -0
- package/dist/excel-row.js.map +7 -0
- package/dist/excel-workbook.js +137 -0
- package/dist/excel-workbook.js.map +7 -0
- package/dist/excel-worksheet.js +279 -0
- package/dist/excel-worksheet.js.map +7 -0
- package/dist/excel-wrapper.js +220 -0
- package/dist/excel-wrapper.js.map +7 -0
- package/dist/index.js +9 -15
- package/dist/index.js.map +7 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +7 -0
- package/dist/utils/excel-utils.js +162 -0
- package/dist/utils/excel-utils.js.map +7 -0
- package/dist/utils/zip-cache.js +74 -0
- package/dist/utils/zip-cache.js.map +7 -0
- package/dist/xml/excel-xml-content-type.js +57 -0
- package/dist/xml/excel-xml-content-type.js.map +7 -0
- package/dist/xml/excel-xml-drawing.js +77 -0
- package/dist/xml/excel-xml-drawing.js.map +7 -0
- package/dist/xml/excel-xml-relationship.js +72 -0
- package/dist/xml/excel-xml-relationship.js.map +7 -0
- package/dist/xml/excel-xml-shared-string.js +61 -0
- package/dist/xml/excel-xml-shared-string.js.map +7 -0
- package/dist/xml/excel-xml-style.js +313 -0
- package/dist/xml/excel-xml-style.js.map +7 -0
- package/dist/xml/excel-xml-unknown.js +11 -0
- package/dist/xml/excel-xml-unknown.js.map +7 -0
- package/dist/xml/excel-xml-workbook.js +94 -0
- package/dist/xml/excel-xml-workbook.js.map +7 -0
- package/dist/xml/excel-xml-worksheet.js +405 -0
- package/dist/xml/excel-xml-worksheet.js.map +7 -0
- package/package.json +13 -7
- 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 -9
- 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/tests/excel-cell.spec.ts +407 -0
- package/tests/excel-col.spec.ts +112 -0
- package/tests/excel-row.spec.ts +71 -0
- package/tests/excel-workbook.spec.ts +166 -0
- package/tests/excel-worksheet.spec.ts +389 -0
- package/tests/excel-wrapper.spec.ts +275 -0
- package/tests/fixtures/logo.png +0 -0
- package/tests/image-insert.spec.ts +188 -0
- package/tests/utils/excel-utils.spec.ts +240 -0
- package/dist/ExcelCell.d.ts +0 -13
- package/dist/ExcelCell.js +0 -161
- package/dist/ExcelCell.js.map +0 -1
- package/dist/ExcelCellStyle.d.ts +0 -31
- package/dist/ExcelCellStyle.js +0 -312
- package/dist/ExcelCellStyle.js.map +0 -1
- package/dist/ExcelColumn.d.ts +0 -8
- package/dist/ExcelColumn.js +0 -49
- package/dist/ExcelColumn.js.map +0 -1
- package/dist/ExcelRow.d.ts +0 -7
- package/dist/ExcelRow.js +0 -21
- package/dist/ExcelRow.js.map +0 -1
- package/dist/ExcelWorkbook.d.ts +0 -24
- package/dist/ExcelWorkbook.js +0 -418
- package/dist/ExcelWorkbook.js.map +0 -1
- package/dist/ExcelWorksheet.d.ts +0 -14
- package/dist/ExcelWorksheet.js +0 -31
- package/dist/ExcelWorksheet.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/utils/ExcelUtils.d.ts +0 -14
- package/dist/utils/ExcelUtils.js +0 -66
- package/dist/utils/ExcelUtils.js.map +0 -1
- package/dist/utils/XmlConvert.d.ts +0 -4
- package/dist/utils/XmlConvert.js +0 -64
- package/dist/utils/XmlConvert.js.map +0 -1
- package/src/ExcelCell.ts +0 -163
- package/src/ExcelCellStyle.ts +0 -297
- package/src/ExcelColumn.ts +0 -46
- package/src/ExcelRow.ts +0 -17
- package/src/ExcelWorkbook.ts +0 -369
- package/src/ExcelWorksheet.ts +0 -27
- package/src/utils/ExcelUtils.ts +0 -68
- package/src/utils/XmlConvert.ts +0 -20
- package/tsconfig.build.json +0 -18
- package/tsconfig.json +0 -18
- package/tslint.json +0 -5
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import "@simplysm/core-common";
|
|
2
|
+
import { numParseInt } from "@simplysm/core-common";
|
|
3
|
+
class ExcelXmlWorkbook {
|
|
4
|
+
data;
|
|
5
|
+
constructor(data) {
|
|
6
|
+
if (data === void 0) {
|
|
7
|
+
this.data = {
|
|
8
|
+
workbook: {
|
|
9
|
+
$: {
|
|
10
|
+
"xmlns": "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
|
|
11
|
+
"xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
} else {
|
|
16
|
+
this.data = data;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
get lastWsRelId() {
|
|
20
|
+
var _a;
|
|
21
|
+
const sheets = (_a = this.data.workbook.sheets) == null ? void 0 : _a[0].sheet;
|
|
22
|
+
if (!sheets || sheets.length === 0) return void 0;
|
|
23
|
+
const maxSheet = sheets.orderByDesc((sheet) => numParseInt(sheet.$["r:id"])).first();
|
|
24
|
+
return maxSheet ? numParseInt(maxSheet.$["r:id"]) : void 0;
|
|
25
|
+
}
|
|
26
|
+
get sheetNames() {
|
|
27
|
+
var _a;
|
|
28
|
+
return ((_a = this.data.workbook.sheets) == null ? void 0 : _a[0].sheet.map((item) => item.$.name)) ?? [];
|
|
29
|
+
}
|
|
30
|
+
addWorksheet(name) {
|
|
31
|
+
const replacedName = this._getReplacedName(name);
|
|
32
|
+
const newWsRelId = (this.lastWsRelId ?? 0) + 1;
|
|
33
|
+
this.data.workbook.sheets = this.data.workbook.sheets ?? [{ sheet: [] }];
|
|
34
|
+
this.data.workbook.sheets[0].sheet.push({
|
|
35
|
+
$: {
|
|
36
|
+
"name": replacedName,
|
|
37
|
+
"sheetId": newWsRelId.toString(),
|
|
38
|
+
"r:id": `rId${newWsRelId}`
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
cleanup() {
|
|
44
|
+
const result = {};
|
|
45
|
+
const workbookRec = this.data.workbook;
|
|
46
|
+
const resultRec = result;
|
|
47
|
+
for (const key of Object.keys(this.data.workbook)) {
|
|
48
|
+
if (key === "bookViews") continue;
|
|
49
|
+
if (key === "sheets") {
|
|
50
|
+
if (this.data.workbook.bookViews != null) {
|
|
51
|
+
result.bookViews = this.data.workbook.bookViews;
|
|
52
|
+
}
|
|
53
|
+
result.sheets = this.data.workbook.sheets;
|
|
54
|
+
} else {
|
|
55
|
+
resultRec[key] = workbookRec[key];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.data.workbook = result;
|
|
59
|
+
}
|
|
60
|
+
initializeView() {
|
|
61
|
+
this.data.workbook.bookViews = this.data.workbook.bookViews ?? [{ workbookView: [{}] }];
|
|
62
|
+
}
|
|
63
|
+
getWsRelIdByName(name) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
return numParseInt((_b = (((_a = this.data.workbook.sheets) == null ? void 0 : _a[0].sheet) ?? []).single((item) => item.$.name === name)) == null ? void 0 : _b.$["r:id"]);
|
|
66
|
+
}
|
|
67
|
+
getWsRelIdByIndex(index) {
|
|
68
|
+
var _a, _b;
|
|
69
|
+
return numParseInt((_b = (_a = this.data.workbook.sheets) == null ? void 0 : _a[0].sheet[index]) == null ? void 0 : _b.$["r:id"]);
|
|
70
|
+
}
|
|
71
|
+
getWorksheetNameById(id) {
|
|
72
|
+
var _a;
|
|
73
|
+
return (_a = this._getSheetDataById(id)) == null ? void 0 : _a.$.name;
|
|
74
|
+
}
|
|
75
|
+
setWorksheetNameById(id, newName) {
|
|
76
|
+
const sheetData = this._getSheetDataById(id);
|
|
77
|
+
if (sheetData == null) {
|
|
78
|
+
throw new Error(`\uC6CC\uD06C\uC2DC\uD2B8 ID ${id}\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4`);
|
|
79
|
+
}
|
|
80
|
+
const replacedName = this._getReplacedName(newName);
|
|
81
|
+
sheetData.$.name = replacedName;
|
|
82
|
+
}
|
|
83
|
+
_getSheetDataById(id) {
|
|
84
|
+
var _a;
|
|
85
|
+
return (((_a = this.data.workbook.sheets) == null ? void 0 : _a[0].sheet) ?? []).single((item) => numParseInt(item.$["r:id"]) === id);
|
|
86
|
+
}
|
|
87
|
+
_getReplacedName(name) {
|
|
88
|
+
return name.replace(/[:\\/?*\[\]']/g, "_");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export {
|
|
92
|
+
ExcelXmlWorkbook
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=excel-xml-workbook.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/xml/excel-xml-workbook.ts"],
|
|
4
|
+
"sourcesContent": ["import \"@simplysm/core-common\";\nimport { numParseInt } from \"@simplysm/core-common\";\nimport type { ExcelXml, ExcelXmlWorkbookData } from \"../types\";\n\n/**\n * xl/workbook.xml \uD30C\uC77C\uC744 \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * \uC6CC\uD06C\uC2DC\uD2B8 \uBAA9\uB85D\uACFC \uAD00\uACC4 ID\uB97C \uCC98\uB9AC\uD55C\uB2E4.\n */\nexport class ExcelXmlWorkbook implements ExcelXml {\n data: ExcelXmlWorkbookData;\n\n constructor(data?: ExcelXmlWorkbookData) {\n if (data === undefined) {\n this.data = {\n workbook: {\n $: {\n \"xmlns\": \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n },\n },\n };\n } else {\n this.data = data;\n }\n }\n\n get lastWsRelId(): number | undefined {\n const sheets = this.data.workbook.sheets?.[0].sheet;\n if (!sheets || sheets.length === 0) return undefined;\n const maxSheet = sheets.orderByDesc((sheet) => numParseInt(sheet.$[\"r:id\"])!).first();\n return maxSheet ? numParseInt(maxSheet.$[\"r:id\"]) : undefined;\n }\n\n get sheetNames(): string[] {\n return this.data.workbook.sheets?.[0].sheet.map((item) => item.$.name) ?? [];\n }\n\n addWorksheet(name: string): this {\n const replacedName = this._getReplacedName(name);\n\n const newWsRelId = (this.lastWsRelId ?? 0) + 1;\n\n this.data.workbook.sheets = this.data.workbook.sheets ?? [{ sheet: [] }];\n this.data.workbook.sheets[0].sheet.push({\n $: {\n \"name\": replacedName,\n \"sheetId\": newWsRelId.toString(),\n \"r:id\": `rId${newWsRelId}`,\n },\n });\n\n return this;\n }\n\n cleanup(): void {\n const result = {} as ExcelXmlWorkbookData[\"workbook\"];\n\n // \uC21C\uC11C \uC815\uB82C (\"sheets\"\uAE30\uC900 \uC55E\uB4A4\uB85C, \uB098\uBA38\uC9C0\uB294 \uC6D0\uB798\uC704\uCE58\uB300\uB85C)\n\n const workbookRec = this.data.workbook as Record<string, unknown>;\n const resultRec = result as Record<string, unknown>;\n\n for (const key of Object.keys(this.data.workbook)) {\n if (key === \"bookViews\") continue;\n\n if (key === \"sheets\") {\n if (this.data.workbook.bookViews != null) {\n result.bookViews = this.data.workbook.bookViews;\n }\n result.sheets = this.data.workbook.sheets;\n } else {\n resultRec[key] = workbookRec[key];\n }\n }\n\n this.data.workbook = result;\n }\n\n initializeView(): void {\n this.data.workbook.bookViews = this.data.workbook.bookViews ?? [{ workbookView: [{}] }];\n }\n\n getWsRelIdByName(name: string): number | undefined {\n return numParseInt((this.data.workbook.sheets?.[0].sheet ?? []).single((item) => item.$.name === name)?.$[\"r:id\"]);\n }\n\n getWsRelIdByIndex(index: number): number | undefined {\n return numParseInt(this.data.workbook.sheets?.[0].sheet[index]?.$[\"r:id\"]);\n }\n\n getWorksheetNameById(id: number): string | undefined {\n return this._getSheetDataById(id)?.$.name;\n }\n\n setWorksheetNameById(id: number, newName: string): void {\n const sheetData = this._getSheetDataById(id);\n if (sheetData == null) {\n throw new Error(`\uC6CC\uD06C\uC2DC\uD2B8 ID ${id}\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4`);\n }\n const replacedName = this._getReplacedName(newName);\n sheetData.$.name = replacedName;\n }\n\n private _getSheetDataById(id: number) {\n return (this.data.workbook.sheets?.[0].sheet ?? []).single((item) => numParseInt(item.$[\"r:id\"]) === id);\n }\n\n private _getReplacedName(name: string): string {\n //-- \uC2DC\uD2B8\uBA85\uCE6D \uC0AC\uC6A9\uBD88\uAC00 \uD14D\uC2A4\uD2B8\uB97C \"_\"\uB85C \uBCC0\uD658\n return name.replace(/[:\\\\/?*\\[\\]']/g, \"_\");\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { ExcelUtils } from "../utils/excel-utils";
|
|
2
|
+
import { numParseInt, objClone } from "@simplysm/core-common";
|
|
3
|
+
import "@simplysm/core-common";
|
|
4
|
+
class ExcelXmlWorksheet {
|
|
5
|
+
data;
|
|
6
|
+
_dataMap;
|
|
7
|
+
constructor(data) {
|
|
8
|
+
if (data === void 0) {
|
|
9
|
+
this.data = {
|
|
10
|
+
worksheet: {
|
|
11
|
+
$: {
|
|
12
|
+
xmlns: "http://schemas.openxmlformats.org/spreadsheetml/2006/main"
|
|
13
|
+
},
|
|
14
|
+
dimension: [
|
|
15
|
+
{
|
|
16
|
+
$: {
|
|
17
|
+
ref: "A1"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
sheetData: [{}]
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
} else {
|
|
25
|
+
this.data = data;
|
|
26
|
+
}
|
|
27
|
+
this._dataMap = (this.data.worksheet.sheetData[0].row ?? []).toMap(
|
|
28
|
+
(row) => ExcelUtils.parseRowAddrCode(row.$.r),
|
|
29
|
+
(row) => ({
|
|
30
|
+
data: row,
|
|
31
|
+
cellMap: (row.c ?? []).toMap(
|
|
32
|
+
(cell) => ExcelUtils.parseColAddrCode(cell.$.r),
|
|
33
|
+
(cell) => cell
|
|
34
|
+
)
|
|
35
|
+
})
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
get range() {
|
|
39
|
+
let maxRow = 0;
|
|
40
|
+
let maxCol = 0;
|
|
41
|
+
for (const [rowIdx, info] of this._dataMap.entries()) {
|
|
42
|
+
if (rowIdx > maxRow) maxRow = rowIdx;
|
|
43
|
+
for (const col of info.cellMap.keys()) {
|
|
44
|
+
if (col > maxCol) maxCol = col;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
s: { r: 0, c: 0 },
|
|
49
|
+
e: { r: maxRow, c: maxCol }
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
setCellType(addr, type) {
|
|
53
|
+
const cellData = this._getOrCreateCellData(addr);
|
|
54
|
+
if (type != null) {
|
|
55
|
+
cellData.$.t = type;
|
|
56
|
+
} else {
|
|
57
|
+
delete cellData.$.t;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
getCellType(addr) {
|
|
61
|
+
var _a;
|
|
62
|
+
return (_a = this._getCellData(addr)) == null ? void 0 : _a.$.t;
|
|
63
|
+
}
|
|
64
|
+
setCellVal(addr, val) {
|
|
65
|
+
const cellData = this._getOrCreateCellData(addr);
|
|
66
|
+
if (val === void 0) {
|
|
67
|
+
delete cellData.v;
|
|
68
|
+
} else {
|
|
69
|
+
cellData.v = [val];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
getCellVal(addr) {
|
|
73
|
+
var _a, _b, _c, _d, _e;
|
|
74
|
+
const cellData = this._getCellData(addr);
|
|
75
|
+
const val = ((_a = cellData == null ? void 0 : cellData.v) == null ? void 0 : _a[0]) ?? ((_e = (_d = (_c = (_b = cellData == null ? void 0 : cellData.is) == null ? void 0 : _b[0]) == null ? void 0 : _c.t) == null ? void 0 : _d[0]) == null ? void 0 : _e._);
|
|
76
|
+
return typeof val === "string" ? val : void 0;
|
|
77
|
+
}
|
|
78
|
+
setCellFormula(addr, val) {
|
|
79
|
+
const cellData = this._getOrCreateCellData(addr);
|
|
80
|
+
if (val === void 0) {
|
|
81
|
+
delete cellData.f;
|
|
82
|
+
} else {
|
|
83
|
+
cellData.f = [val];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
getCellFormula(addr) {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
const val = (_b = (_a = this._getCellData(addr)) == null ? void 0 : _a.f) == null ? void 0 : _b[0];
|
|
89
|
+
return typeof val === "string" ? val : void 0;
|
|
90
|
+
}
|
|
91
|
+
getCellStyleId(addr) {
|
|
92
|
+
var _a;
|
|
93
|
+
return (_a = this._getCellData(addr)) == null ? void 0 : _a.$.s;
|
|
94
|
+
}
|
|
95
|
+
setCellStyleId(addr, styleId) {
|
|
96
|
+
if (styleId != null) {
|
|
97
|
+
this._getOrCreateCellData(addr).$.s = styleId;
|
|
98
|
+
} else {
|
|
99
|
+
delete this._getOrCreateCellData(addr).$.s;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
deleteCell(addr) {
|
|
103
|
+
const rowInfo = this._dataMap.get(addr.r);
|
|
104
|
+
if (rowInfo == null) return;
|
|
105
|
+
const cellData = rowInfo.cellMap.get(addr.c);
|
|
106
|
+
if (cellData == null) return;
|
|
107
|
+
const cellsData = rowInfo.data.c;
|
|
108
|
+
const cellIndex = cellsData.indexOf(cellData);
|
|
109
|
+
if (cellIndex !== -1) cellsData.splice(cellIndex, 1);
|
|
110
|
+
rowInfo.cellMap.delete(addr.c);
|
|
111
|
+
if (rowInfo.cellMap.size === 0) {
|
|
112
|
+
this._deleteRow(addr.r);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
setMergeCells(startAddr, endAddr) {
|
|
116
|
+
const mergeCells = this.data.worksheet.mergeCells = this.data.worksheet.mergeCells ?? [
|
|
117
|
+
{
|
|
118
|
+
$: { count: "0" },
|
|
119
|
+
mergeCell: []
|
|
120
|
+
}
|
|
121
|
+
];
|
|
122
|
+
const newRange = { s: startAddr, e: endAddr };
|
|
123
|
+
const existingMergeCells = mergeCells[0].mergeCell;
|
|
124
|
+
for (const mergeCell of existingMergeCells) {
|
|
125
|
+
const existingRange = ExcelUtils.parseRangeAddrCode(mergeCell.$.ref);
|
|
126
|
+
if (newRange.s.r <= existingRange.e.r && newRange.e.r >= existingRange.s.r && newRange.s.c <= existingRange.e.c && newRange.e.c >= existingRange.s.c) {
|
|
127
|
+
throw new Error(
|
|
128
|
+
`\uBCD1\uD569 \uC140\uC774 \uAE30\uC874 \uBCD1\uD569 \uBC94\uC704(${mergeCell.$.ref})\uC640 \uACB9\uCE69\uB2C8\uB2E4: ${ExcelUtils.stringifyRangeAddr(newRange)}`
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
mergeCells[0].mergeCell.push({ $: { ref: ExcelUtils.stringifyRangeAddr(newRange) } });
|
|
133
|
+
mergeCells[0].$.count = mergeCells[0].mergeCell.length.toString();
|
|
134
|
+
for (let r = startAddr.r; r <= endAddr.r; r++) {
|
|
135
|
+
for (let c = startAddr.c; c <= endAddr.c; c++) {
|
|
136
|
+
const currentAddr = { r, c };
|
|
137
|
+
if (currentAddr.r !== startAddr.r || currentAddr.c !== startAddr.c) {
|
|
138
|
+
this.deleteCell(currentAddr);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
getMergeCells() {
|
|
144
|
+
const mergeCells = this.data.worksheet.mergeCells;
|
|
145
|
+
if (mergeCells === void 0) return [];
|
|
146
|
+
return mergeCells[0].mergeCell.map((item) => ExcelUtils.parseRangeAddrCode(item.$.ref));
|
|
147
|
+
}
|
|
148
|
+
removeMergeCells(fromAddr, toAddr) {
|
|
149
|
+
if (this.data.worksheet.mergeCells == null) return;
|
|
150
|
+
const range = { s: fromAddr, e: toAddr };
|
|
151
|
+
const filteredMergeCells = this.data.worksheet.mergeCells[0].mergeCell.filter((item) => {
|
|
152
|
+
const rangeAddr = ExcelUtils.parseRangeAddrCode(item.$.ref);
|
|
153
|
+
return !(rangeAddr.s.r >= range.s.r && rangeAddr.e.r <= range.e.r && rangeAddr.s.c >= range.s.c && rangeAddr.e.c <= range.e.c);
|
|
154
|
+
});
|
|
155
|
+
if (filteredMergeCells.length === 0) {
|
|
156
|
+
delete this.data.worksheet.mergeCells;
|
|
157
|
+
} else {
|
|
158
|
+
this.data.worksheet.mergeCells[0].mergeCell = filteredMergeCells;
|
|
159
|
+
this.data.worksheet.mergeCells[0].$.count = filteredMergeCells.length.toString();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 특정 열의 너비를 설정한다.
|
|
164
|
+
*
|
|
165
|
+
* @internal
|
|
166
|
+
* 외부에서는 ExcelCol.setWidth()를 사용한다.
|
|
167
|
+
*
|
|
168
|
+
* @param colIndex 열 인덱스 (1-based, 문자열)
|
|
169
|
+
* @param width 설정할 너비
|
|
170
|
+
*/
|
|
171
|
+
setColWidth(colIndex, width) {
|
|
172
|
+
var _a;
|
|
173
|
+
const colIndexNumber = numParseInt(colIndex);
|
|
174
|
+
if (colIndexNumber == null) {
|
|
175
|
+
throw new Error(`\uC798\uBABB\uB41C \uC5F4 \uC778\uB371\uC2A4: ${colIndex}`);
|
|
176
|
+
}
|
|
177
|
+
const cols = (_a = this.data.worksheet.cols) == null ? void 0 : _a[0];
|
|
178
|
+
const col = cols ? cols.col.single(
|
|
179
|
+
(item) => (numParseInt(item.$.min) ?? 0) <= colIndexNumber && (numParseInt(item.$.max) ?? 0) >= colIndexNumber
|
|
180
|
+
) : void 0;
|
|
181
|
+
if (col != null && cols != null) {
|
|
182
|
+
if (col.$.min === col.$.max) {
|
|
183
|
+
col.$.bestFit = "1";
|
|
184
|
+
col.$.customWidth = "1";
|
|
185
|
+
col.$.width = width;
|
|
186
|
+
} else {
|
|
187
|
+
const minNumber = numParseInt(col.$.min) ?? 0;
|
|
188
|
+
const maxNumber = numParseInt(col.$.max) ?? 0;
|
|
189
|
+
let insertIndex = cols.col.indexOf(col);
|
|
190
|
+
if (minNumber < colIndexNumber) {
|
|
191
|
+
cols.col.splice(insertIndex, 0, {
|
|
192
|
+
$: {
|
|
193
|
+
...col.$,
|
|
194
|
+
min: col.$.min,
|
|
195
|
+
max: (colIndexNumber - 1).toString()
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
insertIndex++;
|
|
199
|
+
}
|
|
200
|
+
cols.col.splice(insertIndex, 0, {
|
|
201
|
+
$: {
|
|
202
|
+
min: colIndex,
|
|
203
|
+
max: colIndex,
|
|
204
|
+
bestFit: "1",
|
|
205
|
+
customWidth: "1",
|
|
206
|
+
width
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
insertIndex++;
|
|
210
|
+
if (maxNumber > colIndexNumber) {
|
|
211
|
+
cols.col.splice(insertIndex, 0, {
|
|
212
|
+
$: {
|
|
213
|
+
...col.$,
|
|
214
|
+
min: (colIndexNumber + 1).toString(),
|
|
215
|
+
max: col.$.max
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
const colIndex2 = cols.col.indexOf(col);
|
|
220
|
+
if (colIndex2 !== -1) cols.col.splice(colIndex2, 1);
|
|
221
|
+
}
|
|
222
|
+
} else {
|
|
223
|
+
this.data.worksheet.cols = this.data.worksheet.cols ?? [{ col: [] }];
|
|
224
|
+
this.data.worksheet.cols[0].col.push({
|
|
225
|
+
$: {
|
|
226
|
+
min: colIndex,
|
|
227
|
+
max: colIndex,
|
|
228
|
+
bestFit: "1",
|
|
229
|
+
customWidth: "1",
|
|
230
|
+
width
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
setZoom(percent) {
|
|
236
|
+
this.data.worksheet.sheetViews = this.data.worksheet.sheetViews ?? [
|
|
237
|
+
{ sheetView: [{ $: { workbookViewId: "0" } }] }
|
|
238
|
+
];
|
|
239
|
+
this.data.worksheet.sheetViews[0].sheetView[0].$.zoomScale = percent.toString();
|
|
240
|
+
}
|
|
241
|
+
setFix(point) {
|
|
242
|
+
this.data.worksheet.sheetViews = this.data.worksheet.sheetViews ?? [
|
|
243
|
+
{ sheetView: [{ $: { workbookViewId: "0" } }] }
|
|
244
|
+
];
|
|
245
|
+
this.data.worksheet.sheetViews[0].sheetView[0].pane = [
|
|
246
|
+
{
|
|
247
|
+
$: {
|
|
248
|
+
...point.c != null ? {
|
|
249
|
+
xSplit: (point.c + 1).toString()
|
|
250
|
+
} : {},
|
|
251
|
+
...point.r != null ? {
|
|
252
|
+
ySplit: (point.r + 1).toString()
|
|
253
|
+
} : {},
|
|
254
|
+
topLeftCell: ExcelUtils.stringifyAddr({
|
|
255
|
+
r: (point.r ?? -1) + 1,
|
|
256
|
+
c: (point.c ?? -1) + 1
|
|
257
|
+
}),
|
|
258
|
+
activePane: point.r == null ? "topRight" : point.c == null ? "bottomLeft" : "bottomRight",
|
|
259
|
+
state: "frozen"
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
];
|
|
263
|
+
}
|
|
264
|
+
copyRow(sourceR, targetR) {
|
|
265
|
+
const sourceRowInfo = this._dataMap.get(sourceR);
|
|
266
|
+
if (sourceRowInfo != null) {
|
|
267
|
+
const newRowData = objClone(sourceRowInfo.data);
|
|
268
|
+
newRowData.$.r = ExcelUtils.stringifyRowAddr(targetR);
|
|
269
|
+
if (newRowData.c != null) {
|
|
270
|
+
for (const cellData of newRowData.c) {
|
|
271
|
+
const colAddr = ExcelUtils.parseColAddrCode(cellData.$.r);
|
|
272
|
+
cellData.$.r = ExcelUtils.stringifyAddr({ r: targetR, c: colAddr });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
this._replaceRowData(targetR, newRowData);
|
|
276
|
+
} else {
|
|
277
|
+
this._deleteRow(targetR);
|
|
278
|
+
}
|
|
279
|
+
const sourceMergeCells = this.getMergeCells().filter((mc) => mc.s.r <= sourceR && mc.e.r >= sourceR).map((mc) => ({ s: { ...mc.s }, e: { ...mc.e } }));
|
|
280
|
+
for (const mergeCell of this.getMergeCells()) {
|
|
281
|
+
if (mergeCell.s.r <= targetR && mergeCell.e.r >= targetR) {
|
|
282
|
+
this.removeMergeCells(mergeCell.s, mergeCell.e);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
for (const mergeCell of sourceMergeCells) {
|
|
286
|
+
const rowDiff = targetR - sourceR;
|
|
287
|
+
const newStartAddr = { r: mergeCell.s.r + rowDiff, c: mergeCell.s.c };
|
|
288
|
+
const newEndAddr = { r: mergeCell.e.r + rowDiff, c: mergeCell.e.c };
|
|
289
|
+
this.setMergeCells(newStartAddr, newEndAddr);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
copyCell(sourceAddr, targetAddr) {
|
|
293
|
+
const sourceCellData = this._getCellData(sourceAddr);
|
|
294
|
+
if (sourceCellData != null) {
|
|
295
|
+
const newCellData = objClone(sourceCellData);
|
|
296
|
+
newCellData.$.r = ExcelUtils.stringifyAddr(targetAddr);
|
|
297
|
+
this._replaceCellData(targetAddr, newCellData);
|
|
298
|
+
} else {
|
|
299
|
+
this.deleteCell(targetAddr);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
cleanup() {
|
|
303
|
+
const result = {};
|
|
304
|
+
for (const key of Object.keys(this.data.worksheet)) {
|
|
305
|
+
if (key === "mergeCells") continue;
|
|
306
|
+
if (key === "cols") continue;
|
|
307
|
+
if (key === "sheetViews") continue;
|
|
308
|
+
if (key === "sheetFormatPr") continue;
|
|
309
|
+
if (key === "sheetData") {
|
|
310
|
+
if (this.data.worksheet.sheetViews != null) {
|
|
311
|
+
result.sheetViews = this.data.worksheet.sheetViews;
|
|
312
|
+
}
|
|
313
|
+
if (this.data.worksheet.sheetFormatPr != null) {
|
|
314
|
+
result.sheetFormatPr = this.data.worksheet.sheetFormatPr;
|
|
315
|
+
}
|
|
316
|
+
if (this.data.worksheet.cols != null) {
|
|
317
|
+
result.cols = this.data.worksheet.cols;
|
|
318
|
+
}
|
|
319
|
+
result.sheetData = this.data.worksheet.sheetData;
|
|
320
|
+
if (this.data.worksheet.mergeCells != null) {
|
|
321
|
+
result.mergeCells = this.data.worksheet.mergeCells;
|
|
322
|
+
}
|
|
323
|
+
} else {
|
|
324
|
+
const worksheetRec = this.data.worksheet;
|
|
325
|
+
const resultRec = result;
|
|
326
|
+
resultRec[key] = worksheetRec[key];
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
const rowsData = result.sheetData[0].row = result.sheetData[0].row ?? [];
|
|
330
|
+
rowsData.sort((a, b) => (numParseInt(a.$.r) ?? 0) - (numParseInt(b.$.r) ?? 0));
|
|
331
|
+
for (const rowData of rowsData) {
|
|
332
|
+
const cellsData = rowData.c;
|
|
333
|
+
if (cellsData == null) continue;
|
|
334
|
+
cellsData.sort((a, b) => ExcelUtils.parseCellAddrCode(a.$.r).c - ExcelUtils.parseCellAddrCode(b.$.r).c);
|
|
335
|
+
}
|
|
336
|
+
if (result.dimension != null) {
|
|
337
|
+
result.dimension[0].$.ref = ExcelUtils.stringifyRangeAddr(this.range);
|
|
338
|
+
} else {
|
|
339
|
+
result.dimension = [{ $: { ref: ExcelUtils.stringifyRangeAddr(this.range) } }];
|
|
340
|
+
}
|
|
341
|
+
this.data.worksheet = result;
|
|
342
|
+
}
|
|
343
|
+
_getCellData(addr) {
|
|
344
|
+
var _a;
|
|
345
|
+
return (_a = this._dataMap.get(addr.r)) == null ? void 0 : _a.cellMap.get(addr.c);
|
|
346
|
+
}
|
|
347
|
+
_getOrCreateCellData(addr) {
|
|
348
|
+
const rowInfo = this._getOrCreateRowInfo(addr.r);
|
|
349
|
+
let cellData = rowInfo.cellMap.get(addr.c);
|
|
350
|
+
if (cellData === void 0) {
|
|
351
|
+
rowInfo.data.c = rowInfo.data.c ?? [];
|
|
352
|
+
cellData = { $: { r: ExcelUtils.stringifyAddr(addr) }, v: [""] };
|
|
353
|
+
rowInfo.data.c.push(cellData);
|
|
354
|
+
rowInfo.cellMap.set(addr.c, cellData);
|
|
355
|
+
}
|
|
356
|
+
return cellData;
|
|
357
|
+
}
|
|
358
|
+
_getOrCreateRowInfo(r) {
|
|
359
|
+
const rowInfo = this._dataMap.get(r);
|
|
360
|
+
if (rowInfo == null) {
|
|
361
|
+
return this._replaceRowData(r, { $: { r: ExcelUtils.stringifyRowAddr(r) }, c: [] });
|
|
362
|
+
}
|
|
363
|
+
return rowInfo;
|
|
364
|
+
}
|
|
365
|
+
_replaceRowData(r, rowData) {
|
|
366
|
+
this._deleteRow(r);
|
|
367
|
+
this.data.worksheet.sheetData[0].row = this.data.worksheet.sheetData[0].row ?? [];
|
|
368
|
+
this.data.worksheet.sheetData[0].row.push(rowData);
|
|
369
|
+
const rowInfo = {
|
|
370
|
+
data: rowData,
|
|
371
|
+
cellMap: (rowData.c ?? []).toMap(
|
|
372
|
+
(cell) => ExcelUtils.parseColAddrCode(cell.$.r),
|
|
373
|
+
(cell) => cell
|
|
374
|
+
)
|
|
375
|
+
};
|
|
376
|
+
this._dataMap.set(r, rowInfo);
|
|
377
|
+
return rowInfo;
|
|
378
|
+
}
|
|
379
|
+
_replaceCellData(addr, cellData) {
|
|
380
|
+
this.deleteCell(addr);
|
|
381
|
+
const targetRowInfo = this._getOrCreateRowInfo(addr.r);
|
|
382
|
+
targetRowInfo.data.c = targetRowInfo.data.c ?? [];
|
|
383
|
+
targetRowInfo.data.c.push(cellData);
|
|
384
|
+
targetRowInfo.cellMap.set(addr.c, cellData);
|
|
385
|
+
}
|
|
386
|
+
_deleteRow(r) {
|
|
387
|
+
var _a;
|
|
388
|
+
const targetRowInfo = this._dataMap.get(r);
|
|
389
|
+
if (targetRowInfo != null) {
|
|
390
|
+
const rows = this.data.worksheet.sheetData[0].row;
|
|
391
|
+
if (rows) {
|
|
392
|
+
const rowIndex = rows.indexOf(targetRowInfo.data);
|
|
393
|
+
if (rowIndex !== -1) rows.splice(rowIndex, 1);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
this._dataMap.delete(r);
|
|
397
|
+
if (((_a = this.data.worksheet.sheetData[0].row) == null ? void 0 : _a.length) === 0) {
|
|
398
|
+
delete this.data.worksheet.sheetData[0].row;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
export {
|
|
403
|
+
ExcelXmlWorksheet
|
|
404
|
+
};
|
|
405
|
+
//# sourceMappingURL=excel-xml-worksheet.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/xml/excel-xml-worksheet.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n ExcelAddressRangePoint,\n ExcelCellData,\n ExcelCellType,\n ExcelRowData,\n ExcelXml,\n ExcelXmlWorksheetData,\n} from \"../types\";\nimport { ExcelUtils } from \"../utils/excel-utils\";\nimport { numParseInt, objClone } from \"@simplysm/core-common\";\nimport \"@simplysm/core-common\";\n\ninterface RowInfo {\n data: ExcelRowData;\n cellMap: Map<number, ExcelCellData>;\n}\n\n/**\n * xl/worksheets/sheet*.xml \uD30C\uC77C\uC744 \uAD00\uB9AC\uD558\uB294 \uD074\uB798\uC2A4.\n * \uC140 \uB370\uC774\uD130, \uBCD1\uD569, \uC5F4 \uB108\uBE44, \uD589 \uB192\uC774 \uB4F1\uC744 \uCC98\uB9AC\uD55C\uB2E4.\n */\nexport class ExcelXmlWorksheet implements ExcelXml {\n data: ExcelXmlWorksheetData;\n\n private readonly _dataMap: Map<number, RowInfo>;\n\n constructor(data?: ExcelXmlWorksheetData) {\n if (data === undefined) {\n this.data = {\n worksheet: {\n $: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\n },\n dimension: [\n {\n $: {\n ref: \"A1\",\n },\n },\n ],\n sheetData: [{}],\n },\n };\n } else {\n this.data = data;\n }\n\n this._dataMap = (this.data.worksheet.sheetData[0].row ?? []).toMap(\n (row) => ExcelUtils.parseRowAddrCode(row.$.r),\n (row) => ({\n data: row,\n cellMap: (row.c ?? []).toMap(\n (cell) => ExcelUtils.parseColAddrCode(cell.$.r),\n (cell) => cell,\n ),\n }),\n );\n }\n\n get range(): ExcelAddressRangePoint {\n let maxRow = 0;\n let maxCol = 0;\n\n for (const [rowIdx, info] of this._dataMap.entries()) {\n if (rowIdx > maxRow) maxRow = rowIdx;\n\n for (const col of info.cellMap.keys()) {\n if (col > maxCol) maxCol = col;\n }\n }\n\n return {\n s: { r: 0, c: 0 },\n e: { r: maxRow, c: maxCol },\n };\n }\n\n setCellType(addr: { r: number; c: number }, type: ExcelCellType | undefined): void {\n const cellData = this._getOrCreateCellData(addr);\n if (type != null) {\n cellData.$.t = type;\n } else {\n delete cellData.$.t;\n }\n }\n\n getCellType(addr: { r: number; c: number }): ExcelCellType | undefined {\n return this._getCellData(addr)?.$.t as ExcelCellType | undefined;\n }\n\n setCellVal(addr: { r: number; c: number }, val: string | undefined): void {\n const cellData = this._getOrCreateCellData(addr);\n if (val === undefined) {\n delete cellData.v;\n } else {\n cellData.v = [val];\n }\n }\n\n getCellVal(addr: { r: number; c: number }): string | undefined {\n const cellData = this._getCellData(addr);\n const val = cellData?.v?.[0] ?? cellData?.is?.[0]?.t?.[0]?._;\n return typeof val === \"string\" ? val : undefined;\n }\n\n setCellFormula(addr: { r: number; c: number }, val: string | undefined): void {\n const cellData = this._getOrCreateCellData(addr);\n if (val === undefined) {\n delete cellData.f;\n } else {\n cellData.f = [val];\n }\n }\n\n getCellFormula(addr: { r: number; c: number }): string | undefined {\n const val = this._getCellData(addr)?.f?.[0];\n return typeof val === \"string\" ? val : undefined;\n }\n\n getCellStyleId(addr: { r: number; c: number }): string | undefined {\n return this._getCellData(addr)?.$.s;\n }\n\n setCellStyleId(addr: { r: number; c: number }, styleId: string | undefined): void {\n if (styleId != null) {\n this._getOrCreateCellData(addr).$.s = styleId;\n } else {\n delete this._getOrCreateCellData(addr).$.s;\n }\n }\n\n deleteCell(addr: { r: number; c: number }): void {\n // ROW \uC5C6\uC73C\uBA74 \uBB34\uD6A8\n const rowInfo = this._dataMap.get(addr.r);\n if (rowInfo == null) return;\n\n // CELL \uC5C6\uC73C\uBA74 \uBB34\uD6A8\n const cellData = rowInfo.cellMap.get(addr.c);\n if (cellData == null) return;\n\n // CELL \uC0AD\uC81C\n const cellsData = rowInfo.data.c!;\n const cellIndex = cellsData.indexOf(cellData);\n if (cellIndex !== -1) cellsData.splice(cellIndex, 1);\n rowInfo.cellMap.delete(addr.c);\n\n // \uB9C8\uC9C0\uB9C9 CELL\uC774\uBA74 ROW\uB3C4 \uC0AD\uC81C\n if (rowInfo.cellMap.size === 0) {\n this._deleteRow(addr.r);\n }\n }\n\n setMergeCells(startAddr: { r: number; c: number }, endAddr: { r: number; c: number }): void {\n const mergeCells = (this.data.worksheet.mergeCells = this.data.worksheet.mergeCells ?? [\n {\n $: { count: \"0\" },\n mergeCell: [],\n },\n ]);\n\n const newRange = { s: startAddr, e: endAddr };\n\n // \uBA38\uC9C0 \uACB9\uCE68 \uCCB4\uD06C\n const existingMergeCells = mergeCells[0].mergeCell;\n for (const mergeCell of existingMergeCells) {\n const existingRange = ExcelUtils.parseRangeAddrCode(mergeCell.$.ref);\n\n if (\n newRange.s.r <= existingRange.e.r &&\n newRange.e.r >= existingRange.s.r &&\n newRange.s.c <= existingRange.e.c &&\n newRange.e.c >= existingRange.s.c\n ) {\n throw new Error(\n `\uBCD1\uD569 \uC140\uC774 \uAE30\uC874 \uBCD1\uD569 \uBC94\uC704(${mergeCell.$.ref})\uC640 \uACB9\uCE69\uB2C8\uB2E4: ${ExcelUtils.stringifyRangeAddr(newRange)}`,\n );\n }\n }\n\n mergeCells[0].mergeCell.push({ $: { ref: ExcelUtils.stringifyRangeAddr(newRange) } });\n mergeCells[0].$.count = mergeCells[0].mergeCell.length.toString();\n\n // \uC2DC\uC791\uC140\uC678 \uBAA8\uB4E0\uC140 \uC0AD\uC81C\n for (let r = startAddr.r; r <= endAddr.r; r++) {\n for (let c = startAddr.c; c <= endAddr.c; c++) {\n const currentAddr = { r, c };\n if (currentAddr.r !== startAddr.r || currentAddr.c !== startAddr.c) {\n this.deleteCell(currentAddr);\n }\n }\n }\n }\n\n getMergeCells(): { s: { r: number; c: number }; e: { r: number; c: number } }[] {\n const mergeCells = this.data.worksheet.mergeCells;\n if (mergeCells === undefined) return [];\n return mergeCells[0].mergeCell.map((item) => ExcelUtils.parseRangeAddrCode(item.$.ref));\n }\n\n removeMergeCells(fromAddr: { r: number; c: number }, toAddr: { r: number; c: number }): void {\n if (this.data.worksheet.mergeCells == null) return;\n\n const range = { s: fromAddr, e: toAddr };\n\n const filteredMergeCells = this.data.worksheet.mergeCells[0].mergeCell.filter((item) => {\n const rangeAddr = ExcelUtils.parseRangeAddrCode(item.$.ref);\n return !(\n rangeAddr.s.r >= range.s.r &&\n rangeAddr.e.r <= range.e.r &&\n rangeAddr.s.c >= range.s.c &&\n rangeAddr.e.c <= range.e.c\n );\n });\n\n if (filteredMergeCells.length === 0) {\n delete this.data.worksheet.mergeCells;\n } else {\n this.data.worksheet.mergeCells[0].mergeCell = filteredMergeCells;\n this.data.worksheet.mergeCells[0].$.count = filteredMergeCells.length.toString();\n }\n }\n\n /**\n * \uD2B9\uC815 \uC5F4\uC758 \uB108\uBE44\uB97C \uC124\uC815\uD55C\uB2E4.\n *\n * @internal\n * \uC678\uBD80\uC5D0\uC11C\uB294 ExcelCol.setWidth()\uB97C \uC0AC\uC6A9\uD55C\uB2E4.\n *\n * @param colIndex \uC5F4 \uC778\uB371\uC2A4 (1-based, \uBB38\uC790\uC5F4)\n * @param width \uC124\uC815\uD560 \uB108\uBE44\n */\n setColWidth(colIndex: string, width: string): void {\n const colIndexNumber = numParseInt(colIndex);\n if (colIndexNumber == null) {\n throw new Error(`\uC798\uBABB\uB41C \uC5F4 \uC778\uB371\uC2A4: ${colIndex}`);\n }\n\n const cols = this.data.worksheet.cols?.[0];\n\n // \uB300\uC0C1 \uC5F4\uC744 \uD3EC\uD568\uD558\uB294 \uAE30\uC874 \uBC94\uC704 \uCC3E\uAE30\n const col = cols\n ? cols.col.single(\n (item) =>\n (numParseInt(item.$.min) ?? 0) <= colIndexNumber && (numParseInt(item.$.max) ?? 0) >= colIndexNumber,\n )\n : undefined;\n\n if (col != null && cols != null) {\n if (col.$.min === col.$.max) {\n // \uAE30\uC874 \uBC94\uC704\uAC00 \uB2E8\uC77C \uC5F4\uC778 \uACBD\uC6B0: \uD574\uB2F9 \uC5F4\uC758 \uC18D\uC131\uB9CC \uBCC0\uACBD\n col.$.bestFit = \"1\";\n col.$.customWidth = \"1\";\n col.$.width = width;\n } else {\n // \uAE30\uC874 \uBC94\uC704\uAC00 \uC5EC\uB7EC \uC5F4\uC778 \uACBD\uC6B0: \uBC94\uC704\uB97C \uBD84\uD560\uD558\uC5EC \uB300\uC0C1 \uC5F4\uB9CC \uC0C8 width \uC801\uC6A9\n // \uC608: \uAE30\uC874 [1~5, width=10], \uB300\uC0C1=3, \uC0C8 width=20\n // \u2192 [1~2, width=10], [3, width=20], [4~5, width=10]\n const minNumber = numParseInt(col.$.min) ?? 0;\n const maxNumber = numParseInt(col.$.max) ?? 0;\n\n let insertIndex = cols.col.indexOf(col);\n\n // \uC55E\uCABD \uBC94\uC704 \uC0DD\uC131 (min ~ colIndex-1): \uC6D0\uBCF8 \uC18D\uC131 \uC720\uC9C0\n if (minNumber < colIndexNumber) {\n cols.col.splice(insertIndex, 0, {\n $: {\n ...col.$,\n min: col.$.min,\n max: (colIndexNumber - 1).toString(),\n },\n });\n insertIndex++;\n }\n\n // \uB300\uC0C1 \uC5F4 \uC0DD\uC131 (colIndex): \uC0C8 width \uC801\uC6A9\n cols.col.splice(insertIndex, 0, {\n $: {\n min: colIndex,\n max: colIndex,\n bestFit: \"1\",\n customWidth: \"1\",\n width: width,\n },\n });\n insertIndex++;\n\n // \uB4A4\uCABD \uBC94\uC704 \uC0DD\uC131 (colIndex+1 ~ max): \uC6D0\uBCF8 \uC18D\uC131 \uC720\uC9C0\n if (maxNumber > colIndexNumber) {\n cols.col.splice(insertIndex, 0, {\n $: {\n ...col.$,\n min: (colIndexNumber + 1).toString(),\n max: col.$.max,\n },\n });\n }\n\n // \uC6D0\uBCF8 \uBC94\uC704 \uC0AD\uC81C\n const colIndex2 = cols.col.indexOf(col);\n if (colIndex2 !== -1) cols.col.splice(colIndex2, 1);\n }\n } else {\n // \uAE30\uC874 \uBC94\uC704 \uC5C6\uC74C: \uC0C8 \uBC94\uC704 \uC0DD\uC131\n this.data.worksheet.cols = this.data.worksheet.cols ?? [{ col: [] }];\n this.data.worksheet.cols[0].col.push({\n $: {\n min: colIndex,\n max: colIndex,\n bestFit: \"1\",\n customWidth: \"1\",\n width: width,\n },\n });\n }\n }\n\n setZoom(percent: number): void {\n this.data.worksheet.sheetViews = this.data.worksheet.sheetViews ?? [\n { sheetView: [{ $: { workbookViewId: \"0\" } }] },\n ];\n\n this.data.worksheet.sheetViews[0].sheetView[0].$.zoomScale = percent.toString();\n }\n\n setFix(point: { r?: number; c?: number }): void {\n this.data.worksheet.sheetViews = this.data.worksheet.sheetViews ?? [\n { sheetView: [{ $: { workbookViewId: \"0\" } }] },\n ];\n\n this.data.worksheet.sheetViews[0].sheetView[0].pane = [\n {\n $: {\n ...(point.c != null\n ? {\n xSplit: (point.c + 1).toString(),\n }\n : {}),\n ...(point.r != null\n ? {\n ySplit: (point.r + 1).toString(),\n }\n : {}),\n topLeftCell: ExcelUtils.stringifyAddr({\n r: (point.r ?? -1) + 1,\n c: (point.c ?? -1) + 1,\n }),\n activePane: point.r == null ? \"topRight\" : point.c == null ? \"bottomLeft\" : \"bottomRight\",\n state: \"frozen\",\n },\n },\n ];\n }\n\n copyRow(sourceR: number, targetR: number): void {\n // \uCD9C\uBC1C\uC9C0ROW \uB370\uC774\uD130 \uBCF5\uC81C\n const sourceRowInfo = this._dataMap.get(sourceR);\n\n if (sourceRowInfo != null) {\n // rowData \uBCF5\uC81C\n const newRowData: ExcelRowData = objClone(sourceRowInfo.data);\n\n // ROW \uC8FC\uC18C \uBCC0\uACBD\n newRowData.$.r = ExcelUtils.stringifyRowAddr(targetR);\n\n // \uAC01 CELL \uC8FC\uC18C \uBCC0\uACBD\n if (newRowData.c != null) {\n for (const cellData of newRowData.c) {\n const colAddr = ExcelUtils.parseColAddrCode(cellData.$.r);\n cellData.$.r = ExcelUtils.stringifyAddr({ r: targetR, c: colAddr });\n }\n }\n\n this._replaceRowData(targetR, newRowData);\n } else {\n this._deleteRow(targetR);\n }\n\n // \uC18C\uC2A4 \uD589\uC758 \uBCD1\uD569 \uC140 \uC815\uBCF4\uB97C \uBA3C\uC800 \uBCF5\uC0AC\uD558\uC5EC \uC800\uC7A5\n const sourceMergeCells = this.getMergeCells()\n .filter((mc) => mc.s.r <= sourceR && mc.e.r >= sourceR)\n .map((mc) => ({ s: { ...mc.s }, e: { ...mc.e } }));\n\n // \uD0C0\uAC9F \uD589\uC758 \uAE30\uC874 \uBCD1\uD569 \uC140 \uC81C\uAC70\n for (const mergeCell of this.getMergeCells()) {\n if (mergeCell.s.r <= targetR && mergeCell.e.r >= targetR) {\n this.removeMergeCells(mergeCell.s, mergeCell.e);\n }\n }\n\n // \uC800\uC7A5\uB41C \uC18C\uC2A4 \uBCD1\uD569 \uC815\uBCF4\uB85C \uD0C0\uAC9F\uC5D0 \uBCF5\uC0AC\n for (const mergeCell of sourceMergeCells) {\n const rowDiff = targetR - sourceR;\n const newStartAddr = { r: mergeCell.s.r + rowDiff, c: mergeCell.s.c };\n const newEndAddr = { r: mergeCell.e.r + rowDiff, c: mergeCell.e.c };\n this.setMergeCells(newStartAddr, newEndAddr);\n }\n }\n\n copyCell(sourceAddr: { r: number; c: number }, targetAddr: { r: number; c: number }): void {\n const sourceCellData = this._getCellData(sourceAddr);\n\n if (sourceCellData != null) {\n const newCellData = objClone(sourceCellData);\n newCellData.$.r = ExcelUtils.stringifyAddr(targetAddr);\n this._replaceCellData(targetAddr, newCellData);\n } else {\n this.deleteCell(targetAddr);\n }\n }\n\n cleanup(): void {\n const result = {} as ExcelXmlWorksheetData[\"worksheet\"];\n\n // \uC21C\uC11C \uC815\uB82C (\"sheetData\"\uAE30\uC900 \uC55E\uB4A4\uB85C, \uB098\uBA38\uC9C0\uB294 \uC6D0\uB798\uC704\uCE58\uB300\uB85C)\n\n for (const key of Object.keys(this.data.worksheet)) {\n if (key === \"mergeCells\") continue;\n if (key === \"cols\") continue;\n if (key === \"sheetViews\") continue;\n if (key === \"sheetFormatPr\") continue;\n\n if (key === \"sheetData\") {\n if (this.data.worksheet.sheetViews != null) {\n result.sheetViews = this.data.worksheet.sheetViews;\n }\n if (this.data.worksheet.sheetFormatPr != null) {\n result.sheetFormatPr = this.data.worksheet.sheetFormatPr;\n }\n if (this.data.worksheet.cols != null) {\n result.cols = this.data.worksheet.cols;\n }\n result.sheetData = this.data.worksheet.sheetData;\n\n if (this.data.worksheet.mergeCells != null) {\n result.mergeCells = this.data.worksheet.mergeCells;\n }\n } else {\n const worksheetRec = this.data.worksheet as Record<string, unknown>;\n const resultRec = result as Record<string, unknown>;\n resultRec[key] = worksheetRec[key];\n }\n }\n\n // ROW \uC815\uB82C\n const rowsData = (result.sheetData[0].row = result.sheetData[0].row ?? []);\n rowsData.sort((a, b) => (numParseInt(a.$.r) ?? 0) - (numParseInt(b.$.r) ?? 0));\n\n // CELL \uC815\uB82C\n for (const rowData of rowsData) {\n const cellsData = rowData.c;\n if (cellsData == null) continue;\n cellsData.sort((a, b) => ExcelUtils.parseCellAddrCode(a.$.r).c - ExcelUtils.parseCellAddrCode(b.$.r).c);\n }\n\n // Dimension \uAC12 \uC801\uC6A9\n if (result.dimension != null) {\n result.dimension[0].$.ref = ExcelUtils.stringifyRangeAddr(this.range);\n } else {\n result.dimension = [{ $: { ref: ExcelUtils.stringifyRangeAddr(this.range) } }];\n }\n\n this.data.worksheet = result;\n }\n\n private _getCellData(addr: { r: number; c: number }): ExcelCellData | undefined {\n return this._dataMap.get(addr.r)?.cellMap.get(addr.c);\n }\n\n private _getOrCreateCellData(addr: { r: number; c: number }): ExcelCellData {\n // ROW \uC5C6\uC73C\uBA74 \uB9CC\uB4E4\uAE30\n const rowInfo = this._getOrCreateRowInfo(addr.r);\n\n // CELL \uC5C6\uC73C\uBA74 \uB9CC\uB4E4\uAE30\n let cellData = rowInfo.cellMap.get(addr.c);\n if (cellData === undefined) {\n rowInfo.data.c = rowInfo.data.c ?? [];\n\n cellData = { $: { r: ExcelUtils.stringifyAddr(addr) }, v: [\"\"] };\n rowInfo.data.c.push(cellData);\n rowInfo.cellMap.set(addr.c, cellData);\n }\n\n return cellData;\n }\n\n private _getOrCreateRowInfo(r: number): RowInfo {\n const rowInfo = this._dataMap.get(r);\n if (rowInfo == null) {\n return this._replaceRowData(r, { $: { r: ExcelUtils.stringifyRowAddr(r) }, c: [] });\n }\n return rowInfo;\n }\n\n private _replaceRowData(r: number, rowData: ExcelRowData): RowInfo {\n this._deleteRow(r);\n\n // sheet\uC5D0 \uAE30\uB85D\n this.data.worksheet.sheetData[0].row = this.data.worksheet.sheetData[0].row ?? [];\n this.data.worksheet.sheetData[0].row.push(rowData);\n\n // cache\uC5D0 \uAE30\uB85D\n const rowInfo = {\n data: rowData,\n cellMap: (rowData.c ?? []).toMap(\n (cell) => ExcelUtils.parseColAddrCode(cell.$.r),\n (cell) => cell,\n ),\n };\n this._dataMap.set(r, rowInfo);\n\n return rowInfo;\n }\n\n private _replaceCellData(addr: { r: number; c: number }, cellData: ExcelCellData): void {\n this.deleteCell(addr);\n\n // ROW\n const targetRowInfo = this._getOrCreateRowInfo(addr.r);\n\n // sheet\uC5D0 \uAE30\uB85D\n targetRowInfo.data.c = targetRowInfo.data.c ?? [];\n targetRowInfo.data.c.push(cellData);\n\n // cache\uC5D0 \uAE30\uB85D\n targetRowInfo.cellMap.set(addr.c, cellData);\n }\n\n private _deleteRow(r: number): void {\n const targetRowInfo = this._dataMap.get(r);\n if (targetRowInfo != null) {\n const rows = this.data.worksheet.sheetData[0].row;\n if (rows) {\n const rowIndex = rows.indexOf(targetRowInfo.data);\n if (rowIndex !== -1) rows.splice(rowIndex, 1);\n }\n }\n this._dataMap.delete(r);\n\n // ROW\uAC00 \uD558\uB098\uB3C4 \uC5C6\uC73C\uBA74 XML\uC758 row\uBD80\uBD84 \uC790\uCCB4\uB97C \uC0AD\uC81C\n if (this.data.worksheet.sheetData[0].row?.length === 0) {\n delete this.data.worksheet.sheetData[0].row;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/excel",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"sideEffects": false,
|
|
4
|
+
"version": "13.0.0-beta.2",
|
|
5
|
+
"description": "Excel 파일 처리 라이브러리",
|
|
5
6
|
"author": "김석래",
|
|
6
|
-
"repository":
|
|
7
|
-
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/kslhunter/simplysm.git",
|
|
10
|
+
"directory": "packages/excel"
|
|
11
|
+
},
|
|
12
|
+
"license": "Apache-2.0",
|
|
13
|
+
"type": "module",
|
|
8
14
|
"main": "./dist/index.js",
|
|
9
15
|
"types": "./dist/index.d.ts",
|
|
10
16
|
"dependencies": {
|
|
11
|
-
"@simplysm/common": "
|
|
12
|
-
"
|
|
13
|
-
"
|
|
17
|
+
"@simplysm/core-common": "workspace:*",
|
|
18
|
+
"mime": "^4.1.0",
|
|
19
|
+
"zod": "^4.3.5"
|
|
14
20
|
}
|
|
15
21
|
}
|