@cj-tech-master/excelts 0.1.0-canary.20251025023400.dff1908

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 (506) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +232 -0
  3. package/README_zh.md +233 -0
  4. package/dist/LICENSE +22 -0
  5. package/dist/browser/excelts.iife.js +44568 -0
  6. package/dist/browser/excelts.iife.js.map +1 -0
  7. package/dist/browser/excelts.iife.min.js +112 -0
  8. package/dist/cjs/csv/csv.js +193 -0
  9. package/dist/cjs/doc/anchor.js +86 -0
  10. package/dist/cjs/doc/cell.js +917 -0
  11. package/dist/cjs/doc/column.js +277 -0
  12. package/dist/cjs/doc/data-validations.js +18 -0
  13. package/dist/cjs/doc/defined-names.js +171 -0
  14. package/dist/cjs/doc/enums.js +61 -0
  15. package/dist/cjs/doc/image.js +60 -0
  16. package/dist/cjs/doc/modelcontainer.js +16 -0
  17. package/dist/cjs/doc/note.js +64 -0
  18. package/dist/cjs/doc/pivot-table.js +110 -0
  19. package/dist/cjs/doc/range.js +247 -0
  20. package/dist/cjs/doc/row.js +375 -0
  21. package/dist/cjs/doc/table.js +410 -0
  22. package/dist/cjs/doc/workbook.js +181 -0
  23. package/dist/cjs/doc/worksheet.js +820 -0
  24. package/dist/cjs/index.js +51 -0
  25. package/dist/cjs/local.js +1 -0
  26. package/dist/cjs/package.json +3 -0
  27. package/dist/cjs/stream/xlsx/hyperlink-reader.js +82 -0
  28. package/dist/cjs/stream/xlsx/sheet-comments-writer.js +103 -0
  29. package/dist/cjs/stream/xlsx/sheet-rels-writer.js +93 -0
  30. package/dist/cjs/stream/xlsx/workbook-reader.js +356 -0
  31. package/dist/cjs/stream/xlsx/workbook-writer.js +368 -0
  32. package/dist/cjs/stream/xlsx/worksheet-reader.js +347 -0
  33. package/dist/cjs/stream/xlsx/worksheet-writer.js +593 -0
  34. package/dist/cjs/types.js +25 -0
  35. package/dist/cjs/utils/browser-buffer-decode.js +13 -0
  36. package/dist/cjs/utils/browser-buffer-encode.js +13 -0
  37. package/dist/cjs/utils/browser.js +6 -0
  38. package/dist/cjs/utils/cell-matrix.js +148 -0
  39. package/dist/cjs/utils/col-cache.js +281 -0
  40. package/dist/cjs/utils/copy-style.js +46 -0
  41. package/dist/cjs/utils/encryptor.js +55 -0
  42. package/dist/cjs/utils/iterate-stream.js +57 -0
  43. package/dist/cjs/utils/parse-sax.js +31 -0
  44. package/dist/cjs/utils/shared-formula.js +38 -0
  45. package/dist/cjs/utils/shared-strings.js +32 -0
  46. package/dist/cjs/utils/stream-buf.js +336 -0
  47. package/dist/cjs/utils/string-buf.js +68 -0
  48. package/dist/cjs/utils/under-dash.js +180 -0
  49. package/dist/cjs/utils/utils.js +234 -0
  50. package/dist/cjs/utils/xml-stream.js +149 -0
  51. package/dist/cjs/utils/zip-stream.js +122 -0
  52. package/dist/cjs/xlsx/defaultnumformats.js +152 -0
  53. package/dist/cjs/xlsx/rel-type.js +22 -0
  54. package/dist/cjs/xlsx/xform/base-xform.js +126 -0
  55. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +93 -0
  56. package/dist/cjs/xlsx/xform/book/sheet-xform.js +32 -0
  57. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
  58. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +27 -0
  59. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +27 -0
  60. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +49 -0
  61. package/dist/cjs/xlsx/xform/book/workbook-xform.js +234 -0
  62. package/dist/cjs/xlsx/xform/comment/comment-xform.js +79 -0
  63. package/dist/cjs/xlsx/xform/comment/comments-xform.js +75 -0
  64. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +37 -0
  65. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +33 -0
  66. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +58 -0
  67. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +85 -0
  68. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +99 -0
  69. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +86 -0
  70. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +63 -0
  71. package/dist/cjs/xlsx/xform/composite-xform.js +51 -0
  72. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +27 -0
  73. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +24 -0
  74. package/dist/cjs/xlsx/xform/core/app-xform.js +86 -0
  75. package/dist/cjs/xlsx/xform/core/content-types-xform.js +120 -0
  76. package/dist/cjs/xlsx/xform/core/core-xform.js +127 -0
  77. package/dist/cjs/xlsx/xform/core/relationship-xform.js +23 -0
  78. package/dist/cjs/xlsx/xform/core/relationships-xform.js +65 -0
  79. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
  80. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +60 -0
  81. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +43 -0
  82. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
  83. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
  84. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +71 -0
  85. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +99 -0
  86. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +40 -0
  87. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +37 -0
  88. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +42 -0
  89. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
  90. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +55 -0
  91. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +67 -0
  92. package/dist/cjs/xlsx/xform/drawing/sp-pr.js +20 -0
  93. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +54 -0
  94. package/dist/cjs/xlsx/xform/list-xform.js +86 -0
  95. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +42 -0
  96. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +67 -0
  97. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +89 -0
  98. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +171 -0
  99. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +37 -0
  100. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +452 -0
  101. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +262 -0
  102. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
  103. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
  104. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +40 -0
  105. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
  106. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +42 -0
  107. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +70 -0
  108. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +22 -0
  109. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +40 -0
  110. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +25 -0
  111. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +83 -0
  112. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
  113. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +51 -0
  114. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
  115. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +72 -0
  116. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
  117. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +63 -0
  118. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
  119. package/dist/cjs/xlsx/xform/sheet/col-xform.js +78 -0
  120. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +246 -0
  121. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +26 -0
  122. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +30 -0
  123. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +69 -0
  124. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +127 -0
  125. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +50 -0
  126. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +24 -0
  127. package/dist/cjs/xlsx/xform/sheet/merges.js +53 -0
  128. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +39 -0
  129. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +24 -0
  130. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +45 -0
  131. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
  132. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +98 -0
  133. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +30 -0
  134. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +44 -0
  135. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +34 -0
  136. package/dist/cjs/xlsx/xform/sheet/row-xform.js +133 -0
  137. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +49 -0
  138. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +85 -0
  139. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +83 -0
  140. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +192 -0
  141. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +30 -0
  142. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +504 -0
  143. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +27 -0
  144. package/dist/cjs/xlsx/xform/simple/date-xform.js +68 -0
  145. package/dist/cjs/xlsx/xform/simple/float-xform.js +50 -0
  146. package/dist/cjs/xlsx/xform/simple/integer-xform.js +55 -0
  147. package/dist/cjs/xlsx/xform/simple/string-xform.js +50 -0
  148. package/dist/cjs/xlsx/xform/static-xform.js +58 -0
  149. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +89 -0
  150. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +80 -0
  151. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +93 -0
  152. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +112 -0
  153. package/dist/cjs/xlsx/xform/strings/text-xform.js +39 -0
  154. package/dist/cjs/xlsx/xform/style/alignment-xform.js +155 -0
  155. package/dist/cjs/xlsx/xform/style/border-xform.js +191 -0
  156. package/dist/cjs/xlsx/xform/style/color-xform.js +64 -0
  157. package/dist/cjs/xlsx/xform/style/dxf-xform.js +95 -0
  158. package/dist/cjs/xlsx/xform/style/fill-xform.js +315 -0
  159. package/dist/cjs/xlsx/xform/style/font-xform.js +90 -0
  160. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +53 -0
  161. package/dist/cjs/xlsx/xform/style/protection-xform.js +52 -0
  162. package/dist/cjs/xlsx/xform/style/style-xform.js +111 -0
  163. package/dist/cjs/xlsx/xform/style/styles-xform.js +487 -0
  164. package/dist/cjs/xlsx/xform/style/underline-xform.js +41 -0
  165. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +71 -0
  166. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +34 -0
  167. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +87 -0
  168. package/dist/cjs/xlsx/xform/table/filter-xform.js +32 -0
  169. package/dist/cjs/xlsx/xform/table/table-column-xform.js +43 -0
  170. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +47 -0
  171. package/dist/cjs/xlsx/xform/table/table-xform.js +133 -0
  172. package/dist/cjs/xlsx/xlsx.js +772 -0
  173. package/dist/cjs/xlsx/xml/theme1.js +4 -0
  174. package/dist/esm/csv/csv.js +187 -0
  175. package/dist/esm/doc/anchor.js +83 -0
  176. package/dist/esm/doc/cell.js +914 -0
  177. package/dist/esm/doc/column.js +274 -0
  178. package/dist/esm/doc/data-validations.js +15 -0
  179. package/dist/esm/doc/defined-names.js +168 -0
  180. package/dist/esm/doc/enums.js +58 -0
  181. package/dist/esm/doc/image.js +57 -0
  182. package/dist/esm/doc/modelcontainer.js +13 -0
  183. package/dist/esm/doc/note.js +61 -0
  184. package/dist/esm/doc/pivot-table.js +108 -0
  185. package/dist/esm/doc/range.js +244 -0
  186. package/dist/esm/doc/row.js +372 -0
  187. package/dist/esm/doc/table.js +407 -0
  188. package/dist/esm/doc/workbook.js +178 -0
  189. package/dist/esm/doc/worksheet.js +817 -0
  190. package/dist/esm/index.browser.js +3 -0
  191. package/dist/esm/index.js +20 -0
  192. package/dist/esm/local.js +1 -0
  193. package/dist/esm/stream/xlsx/hyperlink-reader.js +79 -0
  194. package/dist/esm/stream/xlsx/sheet-comments-writer.js +100 -0
  195. package/dist/esm/stream/xlsx/sheet-rels-writer.js +90 -0
  196. package/dist/esm/stream/xlsx/workbook-reader.js +349 -0
  197. package/dist/esm/stream/xlsx/workbook-writer.js +362 -0
  198. package/dist/esm/stream/xlsx/worksheet-reader.js +344 -0
  199. package/dist/esm/stream/xlsx/worksheet-writer.js +590 -0
  200. package/dist/esm/types.js +22 -0
  201. package/dist/esm/utils/browser-buffer-decode.js +11 -0
  202. package/dist/esm/utils/browser-buffer-encode.js +11 -0
  203. package/dist/esm/utils/browser.js +3 -0
  204. package/dist/esm/utils/cell-matrix.js +145 -0
  205. package/dist/esm/utils/col-cache.js +278 -0
  206. package/dist/esm/utils/copy-style.js +43 -0
  207. package/dist/esm/utils/encryptor.js +49 -0
  208. package/dist/esm/utils/iterate-stream.js +55 -0
  209. package/dist/esm/utils/parse-sax.js +29 -0
  210. package/dist/esm/utils/shared-formula.js +36 -0
  211. package/dist/esm/utils/shared-strings.js +29 -0
  212. package/dist/esm/utils/stream-buf.js +333 -0
  213. package/dist/esm/utils/string-buf.js +65 -0
  214. package/dist/esm/utils/under-dash.js +171 -0
  215. package/dist/esm/utils/utils.js +210 -0
  216. package/dist/esm/utils/xml-stream.js +146 -0
  217. package/dist/esm/utils/zip-stream.js +117 -0
  218. package/dist/esm/xlsx/defaultnumformats.js +149 -0
  219. package/dist/esm/xlsx/rel-type.js +19 -0
  220. package/dist/esm/xlsx/xform/base-xform.js +123 -0
  221. package/dist/esm/xlsx/xform/book/defined-name-xform.js +90 -0
  222. package/dist/esm/xlsx/xform/book/sheet-xform.js +29 -0
  223. package/dist/esm/xlsx/xform/book/workbook-calc-properties-xform.js +21 -0
  224. package/dist/esm/xlsx/xform/book/workbook-pivot-cache-xform.js +24 -0
  225. package/dist/esm/xlsx/xform/book/workbook-properties-xform.js +24 -0
  226. package/dist/esm/xlsx/xform/book/workbook-view-xform.js +46 -0
  227. package/dist/esm/xlsx/xform/book/workbook-xform.js +231 -0
  228. package/dist/esm/xlsx/xform/comment/comment-xform.js +76 -0
  229. package/dist/esm/xlsx/xform/comment/comments-xform.js +72 -0
  230. package/dist/esm/xlsx/xform/comment/style/vml-position-xform.js +34 -0
  231. package/dist/esm/xlsx/xform/comment/style/vml-protection-xform.js +30 -0
  232. package/dist/esm/xlsx/xform/comment/vml-anchor-xform.js +55 -0
  233. package/dist/esm/xlsx/xform/comment/vml-client-data-xform.js +82 -0
  234. package/dist/esm/xlsx/xform/comment/vml-notes-xform.js +96 -0
  235. package/dist/esm/xlsx/xform/comment/vml-shape-xform.js +83 -0
  236. package/dist/esm/xlsx/xform/comment/vml-textbox-xform.js +60 -0
  237. package/dist/esm/xlsx/xform/composite-xform.js +48 -0
  238. package/dist/esm/xlsx/xform/core/app-heading-pairs-xform.js +24 -0
  239. package/dist/esm/xlsx/xform/core/app-titles-of-parts-xform.js +21 -0
  240. package/dist/esm/xlsx/xform/core/app-xform.js +83 -0
  241. package/dist/esm/xlsx/xform/core/content-types-xform.js +117 -0
  242. package/dist/esm/xlsx/xform/core/core-xform.js +124 -0
  243. package/dist/esm/xlsx/xform/core/relationship-xform.js +20 -0
  244. package/dist/esm/xlsx/xform/core/relationships-xform.js +62 -0
  245. package/dist/esm/xlsx/xform/drawing/base-cell-anchor-xform.js +44 -0
  246. package/dist/esm/xlsx/xform/drawing/blip-fill-xform.js +57 -0
  247. package/dist/esm/xlsx/xform/drawing/blip-xform.js +40 -0
  248. package/dist/esm/xlsx/xform/drawing/c-nv-pic-pr-xform.js +32 -0
  249. package/dist/esm/xlsx/xform/drawing/c-nv-pr-xform.js +59 -0
  250. package/dist/esm/xlsx/xform/drawing/cell-position-xform.js +68 -0
  251. package/dist/esm/xlsx/xform/drawing/drawing-xform.js +96 -0
  252. package/dist/esm/xlsx/xform/drawing/ext-lst-xform.js +37 -0
  253. package/dist/esm/xlsx/xform/drawing/ext-xform.js +34 -0
  254. package/dist/esm/xlsx/xform/drawing/hlink-click-xform.js +39 -0
  255. package/dist/esm/xlsx/xform/drawing/nv-pic-pr-xform.js +56 -0
  256. package/dist/esm/xlsx/xform/drawing/one-cell-anchor-xform.js +52 -0
  257. package/dist/esm/xlsx/xform/drawing/pic-xform.js +64 -0
  258. package/dist/esm/xlsx/xform/drawing/sp-pr.js +17 -0
  259. package/dist/esm/xlsx/xform/drawing/two-cell-anchor-xform.js +51 -0
  260. package/dist/esm/xlsx/xform/list-xform.js +83 -0
  261. package/dist/esm/xlsx/xform/pivot-table/cache-field.js +39 -0
  262. package/dist/esm/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +64 -0
  263. package/dist/esm/xlsx/xform/pivot-table/pivot-cache-records-xform.js +86 -0
  264. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +168 -0
  265. package/dist/esm/xlsx/xform/sheet/auto-filter-xform.js +34 -0
  266. package/dist/esm/xlsx/xform/sheet/cell-xform.js +449 -0
  267. package/dist/esm/xlsx/xform/sheet/cf/cf-rule-xform.js +259 -0
  268. package/dist/esm/xlsx/xform/sheet/cf/cfvo-xform.js +22 -0
  269. package/dist/esm/xlsx/xform/sheet/cf/color-scale-xform.js +35 -0
  270. package/dist/esm/xlsx/xform/sheet/cf/conditional-formatting-xform.js +37 -0
  271. package/dist/esm/xlsx/xform/sheet/cf/conditional-formattings-xform.js +74 -0
  272. package/dist/esm/xlsx/xform/sheet/cf/databar-xform.js +39 -0
  273. package/dist/esm/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +67 -0
  274. package/dist/esm/xlsx/xform/sheet/cf/formula-xform.js +19 -0
  275. package/dist/esm/xlsx/xform/sheet/cf/icon-set-xform.js +37 -0
  276. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +22 -0
  277. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +80 -0
  278. package/dist/esm/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +35 -0
  279. package/dist/esm/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +48 -0
  280. package/dist/esm/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +40 -0
  281. package/dist/esm/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +69 -0
  282. package/dist/esm/xlsx/xform/sheet/cf-ext/f-ext-xform.js +19 -0
  283. package/dist/esm/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +60 -0
  284. package/dist/esm/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +19 -0
  285. package/dist/esm/xlsx/xform/sheet/col-xform.js +75 -0
  286. package/dist/esm/xlsx/xform/sheet/data-validations-xform.js +243 -0
  287. package/dist/esm/xlsx/xform/sheet/dimension-xform.js +23 -0
  288. package/dist/esm/xlsx/xform/sheet/drawing-xform.js +27 -0
  289. package/dist/esm/xlsx/xform/sheet/ext-lst-xform.js +66 -0
  290. package/dist/esm/xlsx/xform/sheet/header-footer-xform.js +124 -0
  291. package/dist/esm/xlsx/xform/sheet/hyperlink-xform.js +47 -0
  292. package/dist/esm/xlsx/xform/sheet/merge-cell-xform.js +21 -0
  293. package/dist/esm/xlsx/xform/sheet/merges.js +50 -0
  294. package/dist/esm/xlsx/xform/sheet/outline-properties-xform.js +36 -0
  295. package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +21 -0
  296. package/dist/esm/xlsx/xform/sheet/page-margins-xform.js +42 -0
  297. package/dist/esm/xlsx/xform/sheet/page-setup-properties-xform.js +29 -0
  298. package/dist/esm/xlsx/xform/sheet/page-setup-xform.js +95 -0
  299. package/dist/esm/xlsx/xform/sheet/picture-xform.js +27 -0
  300. package/dist/esm/xlsx/xform/sheet/print-options-xform.js +41 -0
  301. package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +31 -0
  302. package/dist/esm/xlsx/xform/sheet/row-xform.js +130 -0
  303. package/dist/esm/xlsx/xform/sheet/sheet-format-properties-xform.js +46 -0
  304. package/dist/esm/xlsx/xform/sheet/sheet-properties-xform.js +82 -0
  305. package/dist/esm/xlsx/xform/sheet/sheet-protection-xform.js +80 -0
  306. package/dist/esm/xlsx/xform/sheet/sheet-view-xform.js +189 -0
  307. package/dist/esm/xlsx/xform/sheet/table-part-xform.js +27 -0
  308. package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +501 -0
  309. package/dist/esm/xlsx/xform/simple/boolean-xform.js +24 -0
  310. package/dist/esm/xlsx/xform/simple/date-xform.js +65 -0
  311. package/dist/esm/xlsx/xform/simple/float-xform.js +47 -0
  312. package/dist/esm/xlsx/xform/simple/integer-xform.js +52 -0
  313. package/dist/esm/xlsx/xform/simple/string-xform.js +47 -0
  314. package/dist/esm/xlsx/xform/static-xform.js +55 -0
  315. package/dist/esm/xlsx/xform/strings/phonetic-text-xform.js +86 -0
  316. package/dist/esm/xlsx/xform/strings/rich-text-xform.js +77 -0
  317. package/dist/esm/xlsx/xform/strings/shared-string-xform.js +90 -0
  318. package/dist/esm/xlsx/xform/strings/shared-strings-xform.js +109 -0
  319. package/dist/esm/xlsx/xform/strings/text-xform.js +36 -0
  320. package/dist/esm/xlsx/xform/style/alignment-xform.js +152 -0
  321. package/dist/esm/xlsx/xform/style/border-xform.js +188 -0
  322. package/dist/esm/xlsx/xform/style/color-xform.js +61 -0
  323. package/dist/esm/xlsx/xform/style/dxf-xform.js +92 -0
  324. package/dist/esm/xlsx/xform/style/fill-xform.js +312 -0
  325. package/dist/esm/xlsx/xform/style/font-xform.js +87 -0
  326. package/dist/esm/xlsx/xform/style/numfmt-xform.js +50 -0
  327. package/dist/esm/xlsx/xform/style/protection-xform.js +49 -0
  328. package/dist/esm/xlsx/xform/style/style-xform.js +108 -0
  329. package/dist/esm/xlsx/xform/style/styles-xform.js +484 -0
  330. package/dist/esm/xlsx/xform/style/underline-xform.js +38 -0
  331. package/dist/esm/xlsx/xform/table/auto-filter-xform.js +68 -0
  332. package/dist/esm/xlsx/xform/table/custom-filter-xform.js +31 -0
  333. package/dist/esm/xlsx/xform/table/filter-column-xform.js +84 -0
  334. package/dist/esm/xlsx/xform/table/filter-xform.js +29 -0
  335. package/dist/esm/xlsx/xform/table/table-column-xform.js +40 -0
  336. package/dist/esm/xlsx/xform/table/table-style-info-xform.js +44 -0
  337. package/dist/esm/xlsx/xform/table/table-xform.js +130 -0
  338. package/dist/esm/xlsx/xlsx.js +766 -0
  339. package/dist/esm/xlsx/xml/theme1.js +1 -0
  340. package/dist/types/csv/csv.d.ts +79 -0
  341. package/dist/types/doc/anchor.d.ts +26 -0
  342. package/dist/types/doc/cell.d.ts +94 -0
  343. package/dist/types/doc/column.d.ts +68 -0
  344. package/dist/types/doc/data-validations.d.ts +11 -0
  345. package/dist/types/doc/defined-names.d.ts +34 -0
  346. package/dist/types/doc/enums.d.ts +62 -0
  347. package/dist/types/doc/image.d.ts +47 -0
  348. package/dist/types/doc/modelcontainer.d.ts +8 -0
  349. package/dist/types/doc/note.d.ts +29 -0
  350. package/dist/types/doc/pivot-table.d.ts +22 -0
  351. package/dist/types/doc/range.d.ts +51 -0
  352. package/dist/types/doc/row.d.ts +75 -0
  353. package/dist/types/doc/table.d.ts +96 -0
  354. package/dist/types/doc/workbook.d.ts +87 -0
  355. package/dist/types/doc/worksheet.d.ts +180 -0
  356. package/dist/types/index.browser.d.ts +4 -0
  357. package/dist/types/index.d.ts +18 -0
  358. package/dist/types/local.d.ts +0 -0
  359. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +27 -0
  360. package/dist/types/stream/xlsx/sheet-comments-writer.d.ts +26 -0
  361. package/dist/types/stream/xlsx/sheet-rels-writer.d.ts +45 -0
  362. package/dist/types/stream/xlsx/workbook-reader.d.ts +50 -0
  363. package/dist/types/stream/xlsx/workbook-writer.d.ts +55 -0
  364. package/dist/types/stream/xlsx/worksheet-reader.d.ts +39 -0
  365. package/dist/types/stream/xlsx/worksheet-writer.d.ts +103 -0
  366. package/dist/types/types.d.ts +464 -0
  367. package/dist/types/utils/browser-buffer-decode.d.ts +2 -0
  368. package/dist/types/utils/browser-buffer-encode.d.ts +2 -0
  369. package/dist/types/utils/browser.d.ts +1 -0
  370. package/dist/types/utils/cell-matrix.d.ts +37 -0
  371. package/dist/types/utils/col-cache.d.ts +33 -0
  372. package/dist/types/utils/copy-style.d.ts +5 -0
  373. package/dist/types/utils/encryptor.d.ts +23 -0
  374. package/dist/types/utils/iterate-stream.d.ts +10 -0
  375. package/dist/types/utils/parse-sax.d.ts +6 -0
  376. package/dist/types/utils/shared-formula.d.ts +2 -0
  377. package/dist/types/utils/shared-strings.d.ts +12 -0
  378. package/dist/types/utils/stream-buf.d.ts +2 -0
  379. package/dist/types/utils/string-buf.d.ts +20 -0
  380. package/dist/types/utils/under-dash.d.ts +7 -0
  381. package/dist/types/utils/utils.d.ts +45 -0
  382. package/dist/types/utils/xml-stream.d.ts +32 -0
  383. package/dist/types/utils/zip-stream.d.ts +35 -0
  384. package/dist/types/xlsx/defaultnumformats.d.ts +12 -0
  385. package/dist/types/xlsx/rel-type.d.ts +19 -0
  386. package/dist/types/xlsx/xform/base-xform.d.ts +33 -0
  387. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +17 -0
  388. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +14 -0
  389. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +11 -0
  390. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +12 -0
  391. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +11 -0
  392. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +17 -0
  393. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +23 -0
  394. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +28 -0
  395. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +21 -0
  396. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +16 -0
  397. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +14 -0
  398. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +27 -0
  399. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +35 -0
  400. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +24 -0
  401. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +25 -0
  402. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +23 -0
  403. package/dist/types/xlsx/xform/composite-xform.d.ts +11 -0
  404. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +8 -0
  405. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +8 -0
  406. package/dist/types/xlsx/xform/core/app-xform.d.ts +26 -0
  407. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +11 -0
  408. package/dist/types/xlsx/xform/core/core-xform.d.ts +42 -0
  409. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +14 -0
  410. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +14 -0
  411. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +13 -0
  412. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +16 -0
  413. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +14 -0
  414. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +9 -0
  415. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +18 -0
  416. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +24 -0
  417. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +24 -0
  418. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +9 -0
  419. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +20 -0
  420. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +11 -0
  421. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +15 -0
  422. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +20 -0
  423. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +22 -0
  424. package/dist/types/xlsx/xform/drawing/sp-pr.d.ts +32 -0
  425. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +20 -0
  426. package/dist/types/xlsx/xform/list-xform.d.ts +31 -0
  427. package/dist/types/xlsx/xform/pivot-table/cache-field.d.ts +11 -0
  428. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +26 -0
  429. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +26 -0
  430. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +29 -0
  431. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +8 -0
  432. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +17 -0
  433. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +41 -0
  434. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +8 -0
  435. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +13 -0
  436. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +9 -0
  437. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +16 -0
  438. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +13 -0
  439. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +9 -0
  440. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +9 -0
  441. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +11 -0
  442. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +10 -0
  443. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +23 -0
  444. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +13 -0
  445. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +16 -0
  446. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +13 -0
  447. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +29 -0
  448. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +9 -0
  449. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +20 -0
  450. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +9 -0
  451. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +22 -0
  452. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +12 -0
  453. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +10 -0
  454. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +12 -0
  455. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +16 -0
  456. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +20 -0
  457. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +16 -0
  458. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +9 -0
  459. package/dist/types/xlsx/xform/sheet/merges.d.ts +14 -0
  460. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +13 -0
  461. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +10 -0
  462. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +17 -0
  463. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +12 -0
  464. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +27 -0
  465. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +12 -0
  466. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +15 -0
  467. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +6 -0
  468. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +35 -0
  469. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +16 -0
  470. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +19 -0
  471. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +31 -0
  472. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +32 -0
  473. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +12 -0
  474. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +21 -0
  475. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +15 -0
  476. package/dist/types/xlsx/xform/simple/date-xform.d.ts +22 -0
  477. package/dist/types/xlsx/xform/simple/float-xform.d.ts +18 -0
  478. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +20 -0
  479. package/dist/types/xlsx/xform/simple/string-xform.d.ts +18 -0
  480. package/dist/types/xlsx/xform/static-xform.d.ts +17 -0
  481. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +20 -0
  482. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +25 -0
  483. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +17 -0
  484. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +27 -0
  485. package/dist/types/xlsx/xform/strings/text-xform.d.ts +10 -0
  486. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +18 -0
  487. package/dist/types/xlsx/xform/style/border-xform.d.ts +49 -0
  488. package/dist/types/xlsx/xform/style/color-xform.d.ts +17 -0
  489. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +23 -0
  490. package/dist/types/xlsx/xform/style/fill-xform.d.ts +85 -0
  491. package/dist/types/xlsx/xform/style/font-xform.d.ts +34 -0
  492. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +18 -0
  493. package/dist/types/xlsx/xform/style/protection-xform.d.ts +13 -0
  494. package/dist/types/xlsx/xform/style/style-xform.d.ts +30 -0
  495. package/dist/types/xlsx/xform/style/styles-xform.d.ts +46 -0
  496. package/dist/types/xlsx/xform/style/underline-xform.d.ts +14 -0
  497. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +21 -0
  498. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +15 -0
  499. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +24 -0
  500. package/dist/types/xlsx/xform/table/filter-xform.d.ts +14 -0
  501. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +21 -0
  502. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +18 -0
  503. package/dist/types/xlsx/xform/table/table-xform.d.ts +37 -0
  504. package/dist/types/xlsx/xlsx.d.ts +59 -0
  505. package/dist/types/xlsx/xml/theme1.d.ts +1 -0
  506. package/package.json +159 -0
@@ -0,0 +1,817 @@
1
+ import { colCache } from "../utils/col-cache.js";
2
+ import { Range } from "./range.js";
3
+ import { Row } from "./row.js";
4
+ import { Column } from "./column.js";
5
+ import { Enums } from "./enums.js";
6
+ import { Image } from "./image.js";
7
+ import { Table } from "./table.js";
8
+ import { DataValidations } from "./data-validations.js";
9
+ import { Encryptor } from "../utils/encryptor.js";
10
+ import { makePivotTable } from "./pivot-table.js";
11
+ import { copyStyle } from "../utils/copy-style.js";
12
+ // Worksheet requirements
13
+ // Operate as sheet inside workbook or standalone
14
+ // Load and Save from file and stream
15
+ // Access/Add/Delete individual cells
16
+ // Manage column widths and row heights
17
+ class Worksheet {
18
+ constructor(options) {
19
+ options = options || {};
20
+ this._workbook = options.workbook;
21
+ // in a workbook, each sheet will have a number
22
+ this.id = options.id || 0;
23
+ this.orderNo = options.orderNo || 0;
24
+ // and a name
25
+ this._name = options.name || `sheet${this.id}`;
26
+ // add a state
27
+ this.state = options.state || "visible";
28
+ // rows allows access organised by row. Sparse array of arrays indexed by row-1, col
29
+ // Note: _rows is zero based. Must subtract 1 to go from cell.row to index
30
+ this._rows = [];
31
+ // column definitions
32
+ this._columns = null;
33
+ // column keys (addRow convenience): key ==> this._collumns index
34
+ this._keys = {};
35
+ // keep record of all merges
36
+ this._merges = {};
37
+ // record of all row and column pageBreaks
38
+ this.rowBreaks = [];
39
+ // for tabColor, default row height, outline levels, etc
40
+ this.properties = Object.assign({}, {
41
+ defaultRowHeight: 15,
42
+ dyDescent: 55,
43
+ outlineLevelCol: 0,
44
+ outlineLevelRow: 0
45
+ }, options.properties);
46
+ // for all things printing
47
+ this.pageSetup = Object.assign({}, {
48
+ margins: { left: 0.7, right: 0.7, top: 0.75, bottom: 0.75, header: 0.3, footer: 0.3 },
49
+ orientation: "portrait",
50
+ horizontalDpi: 4294967295,
51
+ verticalDpi: 4294967295,
52
+ fitToPage: !!(options.pageSetup &&
53
+ (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) &&
54
+ !options.pageSetup.scale),
55
+ pageOrder: "downThenOver",
56
+ blackAndWhite: false,
57
+ draft: false,
58
+ cellComments: "None",
59
+ errors: "displayed",
60
+ scale: 100,
61
+ fitToWidth: 1,
62
+ fitToHeight: 1,
63
+ paperSize: undefined,
64
+ showRowColHeaders: false,
65
+ showGridLines: false,
66
+ firstPageNumber: undefined,
67
+ horizontalCentered: false,
68
+ verticalCentered: false,
69
+ rowBreaks: null,
70
+ colBreaks: null
71
+ }, options.pageSetup);
72
+ this.headerFooter = Object.assign({}, {
73
+ differentFirst: false,
74
+ differentOddEven: false,
75
+ oddHeader: null,
76
+ oddFooter: null,
77
+ evenHeader: null,
78
+ evenFooter: null,
79
+ firstHeader: null,
80
+ firstFooter: null
81
+ }, options.headerFooter);
82
+ this.dataValidations = new DataValidations();
83
+ // for freezepanes, split, zoom, gridlines, etc
84
+ this.views = options.views || [];
85
+ this.autoFilter = options.autoFilter || null;
86
+ // for images, etc
87
+ this._media = [];
88
+ // worksheet protection
89
+ this.sheetProtection = null;
90
+ // for tables
91
+ this.tables = {};
92
+ this.pivotTables = [];
93
+ this.conditionalFormattings = [];
94
+ }
95
+ get name() {
96
+ return this._name;
97
+ }
98
+ set name(name) {
99
+ if (name === undefined) {
100
+ name = `sheet${this.id}`;
101
+ }
102
+ if (this._name === name) {
103
+ return;
104
+ }
105
+ if (typeof name !== "string") {
106
+ throw new Error("The name has to be a string.");
107
+ }
108
+ if (name === "") {
109
+ throw new Error("The name can't be empty.");
110
+ }
111
+ if (name === "History") {
112
+ throw new Error('The name "History" is protected. Please use a different name.');
113
+ }
114
+ // Illegal character in worksheet name: asterisk (*), question mark (?),
115
+ // colon (:), forward slash (/ \), or bracket ([])
116
+ if (/[*?:/\\[\]]/.test(name)) {
117
+ throw new Error(`Worksheet name ${name} cannot include any of the following characters: * ? : \\ / [ ]`);
118
+ }
119
+ if (/(^')|('$)/.test(name)) {
120
+ throw new Error(`The first or last character of worksheet name cannot be a single quotation mark: ${name}`);
121
+ }
122
+ if (name && name.length > 31) {
123
+ if (process.env.NODE_ENV !== "production") {
124
+ console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`);
125
+ }
126
+ name = name.substring(0, 31);
127
+ }
128
+ if (this._workbook._worksheets.find((ws) => ws && ws.name.toLowerCase() === name.toLowerCase())) {
129
+ throw new Error(`Worksheet name already exists: ${name}`);
130
+ }
131
+ this._name = name;
132
+ }
133
+ get workbook() {
134
+ return this._workbook;
135
+ }
136
+ // when you're done with this worksheet, call this to remove from workbook
137
+ destroy() {
138
+ this._workbook.removeWorksheetEx(this);
139
+ }
140
+ // Get the bounding range of the cells in this worksheet
141
+ get dimensions() {
142
+ const dimensions = new Range();
143
+ this._rows.forEach(row => {
144
+ if (row) {
145
+ const rowDims = row.dimensions;
146
+ if (rowDims) {
147
+ dimensions.expand(row.number, rowDims.min, row.number, rowDims.max);
148
+ }
149
+ }
150
+ });
151
+ return dimensions;
152
+ }
153
+ // =========================================================================
154
+ // Columns
155
+ // get the current columns array.
156
+ get columns() {
157
+ return this._columns;
158
+ }
159
+ // set the columns from an array of column definitions.
160
+ // Note: any headers defined will overwrite existing values.
161
+ set columns(value) {
162
+ // calculate max header row count
163
+ this._headerRowCount = value.reduce((pv, cv) => {
164
+ const headerCount = (cv.header && 1) || (cv.headers && cv.headers.length) || 0;
165
+ return Math.max(pv, headerCount);
166
+ }, 0);
167
+ // construct Column objects
168
+ let count = 1;
169
+ const columns = (this._columns = []);
170
+ value.forEach(defn => {
171
+ const column = new Column(this, count++, false);
172
+ columns.push(column);
173
+ column.defn = defn;
174
+ });
175
+ }
176
+ getColumnKey(key) {
177
+ return this._keys[key];
178
+ }
179
+ setColumnKey(key, value) {
180
+ this._keys[key] = value;
181
+ }
182
+ deleteColumnKey(key) {
183
+ delete this._keys[key];
184
+ }
185
+ eachColumnKey(f) {
186
+ Object.keys(this._keys).forEach(key => f(this._keys[key], key));
187
+ }
188
+ // get a single column by col number. If it doesn't exist, create it and any gaps before it
189
+ getColumn(c) {
190
+ let colNum;
191
+ if (typeof c === "string") {
192
+ // if it matches a key'd column, return that
193
+ const col = this._keys[c];
194
+ if (col) {
195
+ return col;
196
+ }
197
+ // otherwise, assume letter
198
+ colNum = colCache.l2n(c);
199
+ }
200
+ else {
201
+ colNum = c;
202
+ }
203
+ if (!this._columns) {
204
+ this._columns = [];
205
+ }
206
+ if (colNum > this._columns.length) {
207
+ let n = this._columns.length + 1;
208
+ while (n <= colNum) {
209
+ this._columns.push(new Column(this, n++));
210
+ }
211
+ }
212
+ return this._columns[colNum - 1];
213
+ }
214
+ spliceColumns(start, count, ...inserts) {
215
+ const rows = this._rows;
216
+ const nRows = rows.length;
217
+ if (inserts.length > 0) {
218
+ // must iterate over all rows whether they exist yet or not
219
+ for (let i = 0; i < nRows; i++) {
220
+ const rowArguments = [start, count];
221
+ inserts.forEach(insert => {
222
+ rowArguments.push(insert[i] || null);
223
+ });
224
+ const row = this.getRow(i + 1);
225
+ row.splice(...rowArguments);
226
+ }
227
+ }
228
+ else {
229
+ // nothing to insert, so just splice all rows
230
+ this._rows.forEach(r => {
231
+ if (r) {
232
+ r.splice(start, count);
233
+ }
234
+ });
235
+ }
236
+ // splice column definitions
237
+ const nExpand = inserts.length - count;
238
+ const nKeep = start + count;
239
+ const nEnd = this._columns ? this._columns.length : 0;
240
+ if (nExpand < 0) {
241
+ for (let i = start + inserts.length; i <= nEnd; i++) {
242
+ this.getColumn(i).defn = this.getColumn(i - nExpand).defn;
243
+ }
244
+ }
245
+ else if (nExpand > 0) {
246
+ for (let i = nEnd; i >= nKeep; i--) {
247
+ this.getColumn(i + nExpand).defn = this.getColumn(i).defn;
248
+ }
249
+ }
250
+ for (let i = start; i < start + inserts.length; i++) {
251
+ this.getColumn(i).defn = null;
252
+ }
253
+ // account for defined names
254
+ this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);
255
+ }
256
+ get lastColumn() {
257
+ return this.getColumn(this.columnCount);
258
+ }
259
+ get columnCount() {
260
+ let maxCount = 0;
261
+ this.eachRow((row) => {
262
+ maxCount = Math.max(maxCount, row.cellCount);
263
+ });
264
+ return maxCount;
265
+ }
266
+ get actualColumnCount() {
267
+ // performance nightmare - for each row, counts all the columns used
268
+ const counts = [];
269
+ let count = 0;
270
+ this.eachRow((row) => {
271
+ row.eachCell(({ col }) => {
272
+ if (!counts[col]) {
273
+ counts[col] = true;
274
+ count++;
275
+ }
276
+ });
277
+ });
278
+ return count;
279
+ }
280
+ // =========================================================================
281
+ // Rows
282
+ _commitRow(row) {
283
+ // nop - allows streaming reader to fill a document
284
+ }
285
+ get _lastRowNumber() {
286
+ // need to cope with results of splice
287
+ const rows = this._rows;
288
+ let n = rows.length;
289
+ while (n > 0 && rows[n - 1] === undefined) {
290
+ n--;
291
+ }
292
+ return n;
293
+ }
294
+ get _nextRow() {
295
+ return this._lastRowNumber + 1;
296
+ }
297
+ get lastRow() {
298
+ if (this._rows.length) {
299
+ return this._rows[this._rows.length - 1];
300
+ }
301
+ return undefined;
302
+ }
303
+ // find a row (if exists) by row number
304
+ findRow(r) {
305
+ return this._rows[r - 1];
306
+ }
307
+ // find multiple rows (if exists) by row number
308
+ findRows(start, length) {
309
+ return this._rows.slice(start - 1, start - 1 + length);
310
+ }
311
+ get rowCount() {
312
+ return this._lastRowNumber;
313
+ }
314
+ get actualRowCount() {
315
+ // counts actual rows that have actual data
316
+ let count = 0;
317
+ this.eachRow(() => {
318
+ count++;
319
+ });
320
+ return count;
321
+ }
322
+ // get a row by row number.
323
+ getRow(r) {
324
+ let row = this._rows[r - 1];
325
+ if (!row) {
326
+ row = this._rows[r - 1] = new Row(this, r);
327
+ }
328
+ return row;
329
+ }
330
+ // get multiple rows by row number.
331
+ getRows(start, length) {
332
+ if (length < 1) {
333
+ return undefined;
334
+ }
335
+ const rows = [];
336
+ for (let i = start; i < start + length; i++) {
337
+ rows.push(this.getRow(i));
338
+ }
339
+ return rows;
340
+ }
341
+ addRow(value, style = "n") {
342
+ const rowNo = this._nextRow;
343
+ const row = this.getRow(rowNo);
344
+ row.values = value;
345
+ this._setStyleOption(rowNo, style[0] === "i" ? style : "n");
346
+ return row;
347
+ }
348
+ addRows(value, style = "n") {
349
+ const rows = [];
350
+ value.forEach(row => {
351
+ rows.push(this.addRow(row, style));
352
+ });
353
+ return rows;
354
+ }
355
+ insertRow(pos, value, style = "n") {
356
+ this.spliceRows(pos, 0, value);
357
+ this._setStyleOption(pos, style);
358
+ return this.getRow(pos);
359
+ }
360
+ insertRows(pos, values, style = "n") {
361
+ this.spliceRows(pos, 0, ...values);
362
+ if (style !== "n") {
363
+ // copy over the styles
364
+ for (let i = 0; i < values.length; i++) {
365
+ if (style[0] === "o" && this.findRow(values.length + pos + i) !== undefined) {
366
+ this._copyStyle(values.length + pos + i, pos + i, style[1] === "+");
367
+ }
368
+ else if (style[0] === "i" && this.findRow(pos - 1) !== undefined) {
369
+ this._copyStyle(pos - 1, pos + i, style[1] === "+");
370
+ }
371
+ }
372
+ }
373
+ return this.getRows(pos, values.length);
374
+ }
375
+ // set row at position to same style as of either pervious row (option 'i') or next row (option 'o')
376
+ _setStyleOption(pos, style = "n") {
377
+ if (style[0] === "o" && this.findRow(pos + 1) !== undefined) {
378
+ this._copyStyle(pos + 1, pos, style[1] === "+");
379
+ }
380
+ else if (style[0] === "i" && this.findRow(pos - 1) !== undefined) {
381
+ this._copyStyle(pos - 1, pos, style[1] === "+");
382
+ }
383
+ }
384
+ _copyStyle(src, dest, styleEmpty = false) {
385
+ const rSrc = this.getRow(src);
386
+ const rDst = this.getRow(dest);
387
+ rDst.style = copyStyle(rSrc.style);
388
+ rSrc.eachCell({ includeEmpty: styleEmpty }, (cell, colNumber) => {
389
+ rDst.getCell(colNumber).style = copyStyle(cell.style);
390
+ });
391
+ rDst.height = rSrc.height;
392
+ }
393
+ duplicateRow(rowNum, count, insert = false) {
394
+ // create count duplicates of rowNum
395
+ // either inserting new or overwriting existing rows
396
+ const rSrc = this._rows[rowNum - 1];
397
+ const inserts = Array.from({ length: count }).fill(rSrc.values);
398
+ this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);
399
+ // now copy styles...
400
+ for (let i = 0; i < count; i++) {
401
+ const rDst = this._rows[rowNum + i];
402
+ rDst.style = rSrc.style;
403
+ rDst.height = rSrc.height;
404
+ rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => {
405
+ rDst.getCell(colNumber).style = cell.style;
406
+ });
407
+ }
408
+ }
409
+ spliceRows(start, count, ...inserts) {
410
+ // same problem as row.splice, except worse.
411
+ const nKeep = start + count;
412
+ const nInserts = inserts.length;
413
+ const nExpand = nInserts - count;
414
+ const nEnd = this._rows.length;
415
+ let i;
416
+ let rSrc;
417
+ if (nExpand < 0) {
418
+ // remove rows
419
+ if (start === nEnd) {
420
+ this._rows[nEnd - 1] = undefined;
421
+ }
422
+ for (i = nKeep; i <= nEnd; i++) {
423
+ rSrc = this._rows[i - 1];
424
+ if (rSrc) {
425
+ const rDst = this.getRow(i + nExpand);
426
+ rDst.values = rSrc.values;
427
+ rDst.style = rSrc.style;
428
+ rDst.height = rSrc.height;
429
+ rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => {
430
+ rDst.getCell(colNumber).style = cell.style;
431
+ });
432
+ this._rows[i - 1] = undefined;
433
+ }
434
+ else {
435
+ this._rows[i + nExpand - 1] = undefined;
436
+ }
437
+ }
438
+ }
439
+ else if (nExpand > 0) {
440
+ // insert new cells
441
+ for (i = nEnd; i >= nKeep; i--) {
442
+ rSrc = this._rows[i - 1];
443
+ if (rSrc) {
444
+ const rDst = this.getRow(i + nExpand);
445
+ rDst.values = rSrc.values;
446
+ rDst.style = rSrc.style;
447
+ rDst.height = rSrc.height;
448
+ rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => {
449
+ rDst.getCell(colNumber).style = cell.style;
450
+ // remerge cells accounting for insert offset
451
+ if (cell._value.constructor.name === "MergeValue") {
452
+ const cellToBeMerged = this.getRow(cell._row._number + nInserts).getCell(colNumber);
453
+ const prevMaster = cell._value._master;
454
+ const newMaster = this.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number);
455
+ cellToBeMerged.merge(newMaster);
456
+ }
457
+ });
458
+ }
459
+ else {
460
+ this._rows[i + nExpand - 1] = undefined;
461
+ }
462
+ }
463
+ }
464
+ // now copy over the new values
465
+ for (i = 0; i < nInserts; i++) {
466
+ const rDst = this.getRow(start + i);
467
+ rDst.style = {};
468
+ rDst.values = inserts[i];
469
+ }
470
+ // account for defined names
471
+ this.workbook.definedNames.spliceRows(this.name, start, count, nInserts);
472
+ }
473
+ eachRow(options, iteratee) {
474
+ if (!iteratee) {
475
+ iteratee = options;
476
+ options = undefined;
477
+ }
478
+ if (options && options.includeEmpty) {
479
+ const n = this._rows.length;
480
+ for (let i = 1; i <= n; i++) {
481
+ iteratee(this.getRow(i), i);
482
+ }
483
+ }
484
+ else {
485
+ this._rows.forEach(row => {
486
+ if (row && row.hasValues) {
487
+ iteratee(row, row.number);
488
+ }
489
+ });
490
+ }
491
+ }
492
+ // return all rows as sparse array
493
+ getSheetValues() {
494
+ const rows = [];
495
+ this._rows.forEach(row => {
496
+ if (row) {
497
+ rows[row.number] = row.values;
498
+ }
499
+ });
500
+ return rows;
501
+ }
502
+ // =========================================================================
503
+ // Cells
504
+ // returns the cell at [r,c] or address given by r. If not found, return undefined
505
+ findCell(r, c) {
506
+ const address = colCache.getAddress(r, c);
507
+ const row = this._rows[address.row - 1];
508
+ return row ? row.findCell(address.col) : undefined;
509
+ }
510
+ // return the cell at [r,c] or address given by r. If not found, create a new one.
511
+ getCell(r, c) {
512
+ const address = colCache.getAddress(r, c);
513
+ const row = this.getRow(address.row);
514
+ return row.getCellEx(address);
515
+ }
516
+ // =========================================================================
517
+ // Merge
518
+ // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell
519
+ mergeCells(...cells) {
520
+ const dimensions = new Range(cells);
521
+ this._mergeCellsInternal(dimensions);
522
+ }
523
+ mergeCellsWithoutStyle(...cells) {
524
+ const dimensions = new Range(cells);
525
+ this._mergeCellsInternal(dimensions, true);
526
+ }
527
+ _mergeCellsInternal(dimensions, ignoreStyle) {
528
+ // check cells aren't already merged
529
+ Object.values(this._merges).forEach((merge) => {
530
+ if (merge.intersects(dimensions)) {
531
+ throw new Error("Cannot merge already merged cells");
532
+ }
533
+ });
534
+ // apply merge
535
+ const master = this.getCell(dimensions.top, dimensions.left);
536
+ for (let i = dimensions.top; i <= dimensions.bottom; i++) {
537
+ for (let j = dimensions.left; j <= dimensions.right; j++) {
538
+ // merge all but the master cell
539
+ if (i > dimensions.top || j > dimensions.left) {
540
+ this.getCell(i, j).merge(master, ignoreStyle);
541
+ }
542
+ }
543
+ }
544
+ // index merge
545
+ this._merges[master.address] = dimensions;
546
+ }
547
+ _unMergeMaster(master) {
548
+ // master is always top left of a rectangle
549
+ const merge = this._merges[master.address];
550
+ if (merge) {
551
+ for (let i = merge.top; i <= merge.bottom; i++) {
552
+ for (let j = merge.left; j <= merge.right; j++) {
553
+ this.getCell(i, j).unmerge();
554
+ }
555
+ }
556
+ delete this._merges[master.address];
557
+ }
558
+ }
559
+ get hasMerges() {
560
+ // return true if this._merges has a merge object
561
+ return Object.values(this._merges).some(Boolean);
562
+ }
563
+ // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge,
564
+ // un-merge the group. Note this function can affect multiple merges and merge-blocks are
565
+ // atomic - either they're all merged or all un-merged.
566
+ unMergeCells(...cells) {
567
+ const dimensions = new Range(cells);
568
+ // find any cells in that range and unmerge them
569
+ for (let i = dimensions.top; i <= dimensions.bottom; i++) {
570
+ for (let j = dimensions.left; j <= dimensions.right; j++) {
571
+ const cell = this.findCell(i, j);
572
+ if (cell) {
573
+ if (cell.type === Enums.ValueType.Merge) {
574
+ // this cell merges to another master
575
+ this._unMergeMaster(cell.master);
576
+ }
577
+ else if (this._merges[cell.address]) {
578
+ // this cell is a master
579
+ this._unMergeMaster(cell);
580
+ }
581
+ }
582
+ }
583
+ }
584
+ }
585
+ // ===========================================================================
586
+ // Shared/Array Formula
587
+ fillFormula(range, formula, results, shareType = "shared") {
588
+ // Define formula for top-left cell and share to rest
589
+ const decoded = colCache.decode(range);
590
+ const { top, left, bottom, right } = decoded;
591
+ const width = right - left + 1;
592
+ const masterAddress = colCache.encodeAddress(top, left);
593
+ const isShared = shareType === "shared";
594
+ // work out result accessor
595
+ let getResult;
596
+ if (typeof results === "function") {
597
+ getResult = results;
598
+ }
599
+ else if (Array.isArray(results)) {
600
+ if (Array.isArray(results[0])) {
601
+ getResult = (row, col) => results[row - top][col - left];
602
+ }
603
+ else {
604
+ getResult = (row, col) => results[(row - top) * width + (col - left)];
605
+ }
606
+ }
607
+ else {
608
+ getResult = () => undefined;
609
+ }
610
+ let first = true;
611
+ for (let r = top; r <= bottom; r++) {
612
+ for (let c = left; c <= right; c++) {
613
+ if (first) {
614
+ this.getCell(r, c).value = {
615
+ shareType,
616
+ formula,
617
+ ref: range,
618
+ result: getResult(r, c)
619
+ };
620
+ first = false;
621
+ }
622
+ else {
623
+ this.getCell(r, c).value = isShared
624
+ ? {
625
+ sharedFormula: masterAddress,
626
+ result: getResult(r, c)
627
+ }
628
+ : getResult(r, c);
629
+ }
630
+ }
631
+ }
632
+ }
633
+ // =========================================================================
634
+ // Images
635
+ addImage(imageId, range) {
636
+ const model = {
637
+ type: "image",
638
+ imageId: String(imageId),
639
+ range
640
+ };
641
+ this._media.push(new Image(this, model));
642
+ }
643
+ getImages() {
644
+ return this._media.filter(m => m.type === "image");
645
+ }
646
+ addBackgroundImage(imageId) {
647
+ const model = {
648
+ type: "background",
649
+ imageId: String(imageId)
650
+ };
651
+ this._media.push(new Image(this, model));
652
+ }
653
+ getBackgroundImageId() {
654
+ const image = this._media.find(m => m.type === "background");
655
+ return image && image.imageId;
656
+ }
657
+ // =========================================================================
658
+ // Worksheet Protection
659
+ protect(password, options) {
660
+ // TODO: make this function truly async
661
+ // perhaps marshal to worker thread or something
662
+ return new Promise(resolve => {
663
+ this.sheetProtection = {
664
+ sheet: true
665
+ };
666
+ if (options && "spinCount" in options) {
667
+ // force spinCount to be integer >= 0
668
+ options.spinCount = Number.isFinite(options.spinCount)
669
+ ? Math.round(Math.max(0, options.spinCount))
670
+ : 100000;
671
+ }
672
+ if (password) {
673
+ this.sheetProtection.algorithmName = "SHA-512";
674
+ this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString("base64");
675
+ this.sheetProtection.spinCount =
676
+ options && "spinCount" in options ? options.spinCount : 100000; // allow user specified spinCount
677
+ this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(password, "SHA512", this.sheetProtection.saltValue, this.sheetProtection.spinCount);
678
+ }
679
+ if (options) {
680
+ this.sheetProtection = Object.assign(this.sheetProtection, options);
681
+ if (!password && "spinCount" in options) {
682
+ delete this.sheetProtection.spinCount;
683
+ }
684
+ }
685
+ resolve();
686
+ });
687
+ }
688
+ unprotect() {
689
+ this.sheetProtection = null;
690
+ }
691
+ // =========================================================================
692
+ // Tables
693
+ addTable(model) {
694
+ const table = new Table(this, model);
695
+ this.tables[model.name] = table;
696
+ return table;
697
+ }
698
+ getTable(name) {
699
+ return this.tables[name];
700
+ }
701
+ removeTable(name) {
702
+ delete this.tables[name];
703
+ }
704
+ getTables() {
705
+ return Object.values(this.tables);
706
+ }
707
+ // =========================================================================
708
+ // Pivot Tables
709
+ addPivotTable(model) {
710
+ console.warn(`Warning: Pivot Table support is experimental.
711
+ Please leave feedback at https://github.com/excelts/excelts/discussions/2575`);
712
+ const pivotTable = makePivotTable(this, model);
713
+ this.pivotTables.push(pivotTable);
714
+ this.workbook.pivotTables.push(pivotTable);
715
+ return pivotTable;
716
+ }
717
+ // ===========================================================================
718
+ // Conditional Formatting
719
+ addConditionalFormatting(cf) {
720
+ this.conditionalFormattings.push(cf);
721
+ }
722
+ removeConditionalFormatting(filter) {
723
+ if (typeof filter === "number") {
724
+ this.conditionalFormattings.splice(filter, 1);
725
+ }
726
+ else if (filter instanceof Function) {
727
+ this.conditionalFormattings = this.conditionalFormattings.filter(filter);
728
+ }
729
+ else {
730
+ this.conditionalFormattings = [];
731
+ }
732
+ }
733
+ // ===========================================================================
734
+ // Model
735
+ get model() {
736
+ const model = {
737
+ id: this.id,
738
+ name: this.name,
739
+ dataValidations: this.dataValidations.model,
740
+ properties: this.properties,
741
+ state: this.state,
742
+ pageSetup: this.pageSetup,
743
+ headerFooter: this.headerFooter,
744
+ rowBreaks: this.rowBreaks,
745
+ views: this.views,
746
+ autoFilter: this.autoFilter,
747
+ media: this._media.map(medium => medium.model),
748
+ sheetProtection: this.sheetProtection,
749
+ tables: Object.values(this.tables).map(table => table.model),
750
+ pivotTables: this.pivotTables,
751
+ conditionalFormattings: this.conditionalFormattings
752
+ };
753
+ // =================================================
754
+ // columns
755
+ model.cols = Column.toModel(this.columns);
756
+ // ==========================================================
757
+ // Rows
758
+ const rows = (model.rows = []);
759
+ const dimensions = (model.dimensions = new Range());
760
+ this._rows.forEach(row => {
761
+ const rowModel = row && row.model;
762
+ if (rowModel) {
763
+ dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max);
764
+ rows.push(rowModel);
765
+ }
766
+ });
767
+ // ==========================================================
768
+ // Merges
769
+ model.merges = [];
770
+ Object.values(this._merges).forEach((merge) => {
771
+ model.merges.push(merge.range);
772
+ });
773
+ return model;
774
+ }
775
+ _parseRows(model) {
776
+ this._rows = [];
777
+ if (model.rows) {
778
+ model.rows.forEach(rowModel => {
779
+ const row = new Row(this, rowModel.number);
780
+ this._rows[row.number - 1] = row;
781
+ row.model = rowModel;
782
+ });
783
+ }
784
+ }
785
+ _parseMergeCells(model) {
786
+ if (model.mergeCells) {
787
+ model.mergeCells.forEach((merge) => {
788
+ // Do not merge styles when importing an Excel file
789
+ // since each cell may have different styles intentionally.
790
+ this.mergeCellsWithoutStyle(merge);
791
+ });
792
+ }
793
+ }
794
+ set model(value) {
795
+ this.name = value.name;
796
+ this._columns = Column.fromModel(this, value.cols);
797
+ this._parseRows(value);
798
+ this._parseMergeCells(value);
799
+ this.dataValidations = new DataValidations(value.dataValidations);
800
+ this.properties = value.properties;
801
+ this.pageSetup = value.pageSetup;
802
+ this.headerFooter = value.headerFooter;
803
+ this.views = value.views;
804
+ this.autoFilter = value.autoFilter;
805
+ this._media = value.media.map(medium => new Image(this, medium));
806
+ this.sheetProtection = value.sheetProtection;
807
+ this.tables = value.tables.reduce((tables, table) => {
808
+ const t = new Table(this, table);
809
+ t.model = table;
810
+ tables[table.name] = t;
811
+ return tables;
812
+ }, {});
813
+ this.pivotTables = value.pivotTables;
814
+ this.conditionalFormattings = value.conditionalFormattings;
815
+ }
816
+ }
817
+ export { Worksheet };