@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.
Files changed (207) hide show
  1. package/.cache/typecheck-browser.tsbuildinfo +1 -0
  2. package/.cache/typecheck-node.tsbuildinfo +1 -0
  3. package/.cache/typecheck-tests-browser.tsbuildinfo +1 -0
  4. package/.cache/typecheck-tests-node.tsbuildinfo +1 -0
  5. package/README.md +491 -0
  6. package/dist/core-common/src/common.types.d.ts +74 -0
  7. package/dist/core-common/src/common.types.d.ts.map +1 -0
  8. package/dist/core-common/src/env.d.ts +6 -0
  9. package/dist/core-common/src/env.d.ts.map +1 -0
  10. package/dist/core-common/src/errors/argument-error.d.ts +25 -0
  11. package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
  12. package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
  13. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
  14. package/dist/core-common/src/errors/sd-error.d.ts +27 -0
  15. package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
  16. package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
  17. package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
  18. package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
  19. package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
  20. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
  21. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
  22. package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
  23. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
  24. package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
  25. package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
  26. package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
  27. package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
  28. package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
  29. package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
  30. package/dist/core-common/src/features/event-emitter.d.ts +66 -0
  31. package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
  32. package/dist/core-common/src/features/serial-queue.d.ts +47 -0
  33. package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
  34. package/dist/core-common/src/index.d.ts +32 -0
  35. package/dist/core-common/src/index.d.ts.map +1 -0
  36. package/dist/core-common/src/types/date-only.d.ts +152 -0
  37. package/dist/core-common/src/types/date-only.d.ts.map +1 -0
  38. package/dist/core-common/src/types/date-time.d.ts +96 -0
  39. package/dist/core-common/src/types/date-time.d.ts.map +1 -0
  40. package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
  41. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
  42. package/dist/core-common/src/types/time.d.ts +68 -0
  43. package/dist/core-common/src/types/time.d.ts.map +1 -0
  44. package/dist/core-common/src/types/uuid.d.ts +35 -0
  45. package/dist/core-common/src/types/uuid.d.ts.map +1 -0
  46. package/dist/core-common/src/utils/bytes.d.ts +51 -0
  47. package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
  48. package/dist/core-common/src/utils/date-format.d.ts +90 -0
  49. package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
  50. package/dist/core-common/src/utils/json.d.ts +34 -0
  51. package/dist/core-common/src/utils/json.d.ts.map +1 -0
  52. package/dist/core-common/src/utils/num.d.ts +60 -0
  53. package/dist/core-common/src/utils/num.d.ts.map +1 -0
  54. package/dist/core-common/src/utils/obj.d.ts +258 -0
  55. package/dist/core-common/src/utils/obj.d.ts.map +1 -0
  56. package/dist/core-common/src/utils/path.d.ts +23 -0
  57. package/dist/core-common/src/utils/path.d.ts.map +1 -0
  58. package/dist/core-common/src/utils/primitive.d.ts +18 -0
  59. package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
  60. package/dist/core-common/src/utils/str.d.ts +103 -0
  61. package/dist/core-common/src/utils/str.d.ts.map +1 -0
  62. package/dist/core-common/src/utils/template-strings.d.ts +84 -0
  63. package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
  64. package/dist/core-common/src/utils/transferable.d.ts +47 -0
  65. package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
  66. package/dist/core-common/src/utils/wait.d.ts +19 -0
  67. package/dist/core-common/src/utils/wait.d.ts.map +1 -0
  68. package/dist/core-common/src/utils/xml.d.ts +36 -0
  69. package/dist/core-common/src/utils/xml.d.ts.map +1 -0
  70. package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
  71. package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
  72. package/dist/excel/src/excel-cell.d.ts +68 -0
  73. package/dist/excel/src/excel-cell.d.ts.map +1 -0
  74. package/dist/excel/src/excel-col.d.ts +19 -0
  75. package/dist/excel/src/excel-col.d.ts.map +1 -0
  76. package/dist/excel/src/excel-row.d.ts +17 -0
  77. package/dist/excel/src/excel-row.d.ts.map +1 -0
  78. package/dist/excel/src/excel-workbook.d.ts +66 -0
  79. package/dist/excel/src/excel-workbook.d.ts.map +1 -0
  80. package/dist/excel/src/excel-worksheet.d.ts +102 -0
  81. package/dist/excel/src/excel-worksheet.d.ts.map +1 -0
  82. package/dist/excel/src/excel-wrapper.d.ts +42 -0
  83. package/dist/excel/src/excel-wrapper.d.ts.map +1 -0
  84. package/dist/excel/src/index.d.ts +9 -0
  85. package/dist/excel/src/index.d.ts.map +1 -0
  86. package/dist/excel/src/types.d.ts +445 -0
  87. package/dist/excel/src/types.d.ts.map +1 -0
  88. package/dist/excel/src/utils/excel-utils.d.ts +50 -0
  89. package/dist/excel/src/utils/excel-utils.d.ts.map +1 -0
  90. package/dist/excel/src/utils/zip-cache.d.ts +23 -0
  91. package/dist/excel/src/utils/zip-cache.d.ts.map +1 -0
  92. package/dist/excel/src/xml/excel-xml-content-type.d.ts +12 -0
  93. package/dist/excel/src/xml/excel-xml-content-type.d.ts.map +1 -0
  94. package/dist/excel/src/xml/excel-xml-drawing.d.ts +26 -0
  95. package/dist/excel/src/xml/excel-xml-drawing.d.ts.map +1 -0
  96. package/dist/excel/src/xml/excel-xml-relationship.d.ts +18 -0
  97. package/dist/excel/src/xml/excel-xml-relationship.d.ts.map +1 -0
  98. package/dist/excel/src/xml/excel-xml-shared-string.d.ts +19 -0
  99. package/dist/excel/src/xml/excel-xml-shared-string.d.ts.map +1 -0
  100. package/dist/excel/src/xml/excel-xml-style.d.ts +31 -0
  101. package/dist/excel/src/xml/excel-xml-style.d.ts.map +1 -0
  102. package/dist/excel/src/xml/excel-xml-unknown.d.ts +11 -0
  103. package/dist/excel/src/xml/excel-xml-unknown.d.ts.map +1 -0
  104. package/dist/excel/src/xml/excel-xml-workbook.d.ts +22 -0
  105. package/dist/excel/src/xml/excel-xml-workbook.d.ts.map +1 -0
  106. package/dist/excel/src/xml/excel-xml-worksheet.d.ts +103 -0
  107. package/dist/excel/src/xml/excel-xml-worksheet.d.ts.map +1 -0
  108. package/dist/excel-cell.js +261 -0
  109. package/dist/excel-cell.js.map +7 -0
  110. package/dist/excel-col.js +36 -0
  111. package/dist/excel-col.js.map +7 -0
  112. package/dist/excel-row.js +31 -0
  113. package/dist/excel-row.js.map +7 -0
  114. package/dist/excel-workbook.js +137 -0
  115. package/dist/excel-workbook.js.map +7 -0
  116. package/dist/excel-worksheet.js +279 -0
  117. package/dist/excel-worksheet.js.map +7 -0
  118. package/dist/excel-wrapper.js +220 -0
  119. package/dist/excel-wrapper.js.map +7 -0
  120. package/dist/index.js +9 -15
  121. package/dist/index.js.map +7 -1
  122. package/dist/types.js +1 -0
  123. package/dist/types.js.map +7 -0
  124. package/dist/utils/excel-utils.js +162 -0
  125. package/dist/utils/excel-utils.js.map +7 -0
  126. package/dist/utils/zip-cache.js +74 -0
  127. package/dist/utils/zip-cache.js.map +7 -0
  128. package/dist/xml/excel-xml-content-type.js +57 -0
  129. package/dist/xml/excel-xml-content-type.js.map +7 -0
  130. package/dist/xml/excel-xml-drawing.js +77 -0
  131. package/dist/xml/excel-xml-drawing.js.map +7 -0
  132. package/dist/xml/excel-xml-relationship.js +72 -0
  133. package/dist/xml/excel-xml-relationship.js.map +7 -0
  134. package/dist/xml/excel-xml-shared-string.js +61 -0
  135. package/dist/xml/excel-xml-shared-string.js.map +7 -0
  136. package/dist/xml/excel-xml-style.js +313 -0
  137. package/dist/xml/excel-xml-style.js.map +7 -0
  138. package/dist/xml/excel-xml-unknown.js +11 -0
  139. package/dist/xml/excel-xml-unknown.js.map +7 -0
  140. package/dist/xml/excel-xml-workbook.js +94 -0
  141. package/dist/xml/excel-xml-workbook.js.map +7 -0
  142. package/dist/xml/excel-xml-worksheet.js +405 -0
  143. package/dist/xml/excel-xml-worksheet.js.map +7 -0
  144. package/package.json +13 -7
  145. package/src/excel-cell.ts +326 -0
  146. package/src/excel-col.ts +43 -0
  147. package/src/excel-row.ts +37 -0
  148. package/src/excel-workbook.ts +206 -0
  149. package/src/excel-worksheet.ts +380 -0
  150. package/src/excel-wrapper.ts +219 -0
  151. package/src/index.ts +13 -9
  152. package/src/types.ts +396 -0
  153. package/src/utils/excel-utils.ts +201 -0
  154. package/src/utils/zip-cache.ts +103 -0
  155. package/src/xml/excel-xml-content-type.ts +64 -0
  156. package/src/xml/excel-xml-drawing.ts +87 -0
  157. package/src/xml/excel-xml-relationship.ts +86 -0
  158. package/src/xml/excel-xml-shared-string.ts +80 -0
  159. package/src/xml/excel-xml-style.ts +393 -0
  160. package/src/xml/excel-xml-unknown.ts +11 -0
  161. package/src/xml/excel-xml-workbook.ts +112 -0
  162. package/src/xml/excel-xml-worksheet.ts +544 -0
  163. package/tests/excel-cell.spec.ts +407 -0
  164. package/tests/excel-col.spec.ts +112 -0
  165. package/tests/excel-row.spec.ts +71 -0
  166. package/tests/excel-workbook.spec.ts +166 -0
  167. package/tests/excel-worksheet.spec.ts +389 -0
  168. package/tests/excel-wrapper.spec.ts +275 -0
  169. package/tests/fixtures/logo.png +0 -0
  170. package/tests/image-insert.spec.ts +188 -0
  171. package/tests/utils/excel-utils.spec.ts +240 -0
  172. package/dist/ExcelCell.d.ts +0 -13
  173. package/dist/ExcelCell.js +0 -161
  174. package/dist/ExcelCell.js.map +0 -1
  175. package/dist/ExcelCellStyle.d.ts +0 -31
  176. package/dist/ExcelCellStyle.js +0 -312
  177. package/dist/ExcelCellStyle.js.map +0 -1
  178. package/dist/ExcelColumn.d.ts +0 -8
  179. package/dist/ExcelColumn.js +0 -49
  180. package/dist/ExcelColumn.js.map +0 -1
  181. package/dist/ExcelRow.d.ts +0 -7
  182. package/dist/ExcelRow.js +0 -21
  183. package/dist/ExcelRow.js.map +0 -1
  184. package/dist/ExcelWorkbook.d.ts +0 -24
  185. package/dist/ExcelWorkbook.js +0 -418
  186. package/dist/ExcelWorkbook.js.map +0 -1
  187. package/dist/ExcelWorksheet.d.ts +0 -14
  188. package/dist/ExcelWorksheet.js +0 -31
  189. package/dist/ExcelWorksheet.js.map +0 -1
  190. package/dist/index.d.ts +0 -9
  191. package/dist/utils/ExcelUtils.d.ts +0 -14
  192. package/dist/utils/ExcelUtils.js +0 -66
  193. package/dist/utils/ExcelUtils.js.map +0 -1
  194. package/dist/utils/XmlConvert.d.ts +0 -4
  195. package/dist/utils/XmlConvert.js +0 -64
  196. package/dist/utils/XmlConvert.js.map +0 -1
  197. package/src/ExcelCell.ts +0 -163
  198. package/src/ExcelCellStyle.ts +0 -297
  199. package/src/ExcelColumn.ts +0 -46
  200. package/src/ExcelRow.ts +0 -17
  201. package/src/ExcelWorkbook.ts +0 -369
  202. package/src/ExcelWorksheet.ts +0 -27
  203. package/src/utils/ExcelUtils.ts +0 -68
  204. package/src/utils/XmlConvert.ts +0 -20
  205. package/tsconfig.build.json +0 -18
  206. package/tsconfig.json +0 -18
  207. 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
- "version": "1.0.138",
4
- "description": "심플리즘 패키지 (엑셀)",
3
+ "sideEffects": false,
4
+ "version": "13.0.0-beta.2",
5
+ "description": "Excel 파일 처리 라이브러리",
5
6
  "author": "김석래",
6
- "repository": "gihub:kslhunter/simplysm",
7
- "license": "MIT",
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": "1.0.138",
12
- "jszip": "^3.2.0",
13
- "xml2js": "^0.4.19"
17
+ "@simplysm/core-common": "workspace:*",
18
+ "mime": "^4.1.0",
19
+ "zod": "^4.3.5"
14
20
  }
15
21
  }