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