@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,593 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorksheetWriter = void 0;
4
+ const rel_type_js_1 = require("../../xlsx/rel-type");
5
+ const col_cache_js_1 = require("../../utils/col-cache");
6
+ const encryptor_js_1 = require("../../utils/encryptor");
7
+ const range_js_1 = require("../../doc/range");
8
+ const string_buf_js_1 = require("../../utils/string-buf");
9
+ const row_js_1 = require("../../doc/row");
10
+ const column_js_1 = require("../../doc/column");
11
+ const sheet_rels_writer_js_1 = require("./sheet-rels-writer");
12
+ const sheet_comments_writer_js_1 = require("./sheet-comments-writer");
13
+ const data_validations_js_1 = require("../../doc/data-validations");
14
+ const xmlBuffer = new string_buf_js_1.StringBuf();
15
+ // ============================================================================================
16
+ // Xforms
17
+ const list_xform_js_1 = require("../../xlsx/xform/list-xform");
18
+ const data_validations_xform_js_1 = require("../../xlsx/xform/sheet/data-validations-xform");
19
+ const sheet_properties_xform_js_1 = require("../../xlsx/xform/sheet/sheet-properties-xform");
20
+ const sheet_format_properties_xform_js_1 = require("../../xlsx/xform/sheet/sheet-format-properties-xform");
21
+ const col_xform_js_1 = require("../../xlsx/xform/sheet/col-xform");
22
+ const row_xform_js_1 = require("../../xlsx/xform/sheet/row-xform");
23
+ const hyperlink_xform_js_1 = require("../../xlsx/xform/sheet/hyperlink-xform");
24
+ const sheet_view_xform_js_1 = require("../../xlsx/xform/sheet/sheet-view-xform");
25
+ const sheet_protection_xform_js_1 = require("../../xlsx/xform/sheet/sheet-protection-xform");
26
+ const page_margins_xform_js_1 = require("../../xlsx/xform/sheet/page-margins-xform");
27
+ const page_setup_xform_js_1 = require("../../xlsx/xform/sheet/page-setup-xform");
28
+ const auto_filter_xform_js_1 = require("../../xlsx/xform/sheet/auto-filter-xform");
29
+ const picture_xform_js_1 = require("../../xlsx/xform/sheet/picture-xform");
30
+ const conditional_formattings_xform_js_1 = require("../../xlsx/xform/sheet/cf/conditional-formattings-xform");
31
+ const header_footer_xform_js_1 = require("../../xlsx/xform/sheet/header-footer-xform");
32
+ const row_breaks_xform_js_1 = require("../../xlsx/xform/sheet/row-breaks-xform");
33
+ // since prepare and render are functional, we can use singletons
34
+ const xform = {
35
+ dataValidations: new data_validations_xform_js_1.DataValidationsXform(),
36
+ sheetProperties: new sheet_properties_xform_js_1.SheetPropertiesXform(),
37
+ sheetFormatProperties: new sheet_format_properties_xform_js_1.SheetFormatPropertiesXform(),
38
+ columns: new list_xform_js_1.ListXform({ tag: "cols", count: false, childXform: new col_xform_js_1.ColXform() }),
39
+ row: new row_xform_js_1.RowXform(),
40
+ hyperlinks: new list_xform_js_1.ListXform({
41
+ tag: "hyperlinks",
42
+ count: false,
43
+ childXform: new hyperlink_xform_js_1.HyperlinkXform()
44
+ }),
45
+ sheetViews: new list_xform_js_1.ListXform({
46
+ tag: "sheetViews",
47
+ count: false,
48
+ childXform: new sheet_view_xform_js_1.SheetViewXform()
49
+ }),
50
+ sheetProtection: new sheet_protection_xform_js_1.SheetProtectionXform(),
51
+ pageMargins: new page_margins_xform_js_1.PageMarginsXform(),
52
+ pageSeteup: new page_setup_xform_js_1.PageSetupXform(),
53
+ autoFilter: new auto_filter_xform_js_1.AutoFilterXform(),
54
+ picture: new picture_xform_js_1.PictureXform(),
55
+ conditionalFormattings: new conditional_formattings_xform_js_1.ConditionalFormattingsXform(),
56
+ headerFooter: new header_footer_xform_js_1.HeaderFooterXform(),
57
+ rowBreaks: new row_breaks_xform_js_1.RowBreaksXform()
58
+ };
59
+ class WorksheetWriter {
60
+ constructor(options) {
61
+ // in a workbook, each sheet will have a number
62
+ this.id = options.id;
63
+ // and a name
64
+ this.name = options.name || `Sheet${this.id}`;
65
+ // add a state
66
+ this.state = options.state || "visible";
67
+ // rows are stored here while they need to be worked on.
68
+ // when they are committed, they will be deleted.
69
+ this._rows = [];
70
+ // column definitions
71
+ this._columns = null;
72
+ // column keys (addRow convenience): key ==> this._columns index
73
+ this._keys = {};
74
+ // keep a record of all row and column pageBreaks
75
+ this._merges = [];
76
+ this._merges.add = function () { }; // ignore cell instruction
77
+ // keep record of all hyperlinks
78
+ this._sheetRelsWriter = new sheet_rels_writer_js_1.SheetRelsWriter(options);
79
+ this._sheetCommentsWriter = new sheet_comments_writer_js_1.SheetCommentsWriter(this, this._sheetRelsWriter, options);
80
+ // keep a record of dimensions
81
+ this._dimensions = new range_js_1.Dimensions();
82
+ // first uncommitted row
83
+ this._rowZero = 1;
84
+ // committed flag
85
+ this.committed = false;
86
+ // for data validations
87
+ this.dataValidations = new data_validations_js_1.DataValidations();
88
+ // for sharing formulae
89
+ this._formulae = {};
90
+ this._siFormulae = 0;
91
+ // keep a record of conditionalFormattings
92
+ this.conditionalFormatting = [];
93
+ // keep a record of all row and column pageBreaks
94
+ this.rowBreaks = [];
95
+ // for default row height, outline levels, etc
96
+ this.properties = Object.assign({}, {
97
+ defaultRowHeight: 15,
98
+ dyDescent: 55,
99
+ outlineLevelCol: 0,
100
+ outlineLevelRow: 0
101
+ }, options.properties);
102
+ this.headerFooter = Object.assign({}, {
103
+ differentFirst: false,
104
+ differentOddEven: false,
105
+ oddHeader: null,
106
+ oddFooter: null,
107
+ evenHeader: null,
108
+ evenFooter: null,
109
+ firstHeader: null,
110
+ firstFooter: null
111
+ }, options.headerFooter);
112
+ // for all things printing
113
+ this.pageSetup = Object.assign({}, {
114
+ margins: { left: 0.7, right: 0.7, top: 0.75, bottom: 0.75, header: 0.3, footer: 0.3 },
115
+ orientation: "portrait",
116
+ horizontalDpi: 4294967295,
117
+ verticalDpi: 4294967295,
118
+ fitToPage: !!(options.pageSetup &&
119
+ (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) &&
120
+ !options.pageSetup.scale),
121
+ pageOrder: "downThenOver",
122
+ blackAndWhite: false,
123
+ draft: false,
124
+ cellComments: "None",
125
+ errors: "displayed",
126
+ scale: 100,
127
+ fitToWidth: 1,
128
+ fitToHeight: 1,
129
+ paperSize: undefined,
130
+ showRowColHeaders: false,
131
+ showGridLines: false,
132
+ horizontalCentered: false,
133
+ verticalCentered: false,
134
+ rowBreaks: null,
135
+ colBreaks: null
136
+ }, options.pageSetup);
137
+ // using shared strings creates a smaller xlsx file but may use more memory
138
+ this.useSharedStrings = options.useSharedStrings || false;
139
+ this._workbook = options.workbook;
140
+ this.hasComments = false;
141
+ // views
142
+ this._views = options.views || [];
143
+ // auto filter
144
+ this.autoFilter = options.autoFilter || null;
145
+ this._media = [];
146
+ // worksheet protection
147
+ this.sheetProtection = null;
148
+ // start writing to stream now
149
+ this._writeOpenWorksheet();
150
+ this.startedData = false;
151
+ }
152
+ get workbook() {
153
+ return this._workbook;
154
+ }
155
+ get stream() {
156
+ if (!this._stream) {
157
+ this._stream = this._workbook._openStream(`xl/worksheets/sheet${this.id}.xml`);
158
+ // DO NOT pause stream - fflate migration requires data events to flow
159
+ // The stream uses 'data' events to pipe to ZipPassThrough
160
+ // this._stream.pause();
161
+ }
162
+ return this._stream;
163
+ }
164
+ // destroy - not a valid operation for a streaming writer
165
+ // even though some streamers might be able to, it's a bad idea.
166
+ destroy() {
167
+ throw new Error("Invalid Operation: destroy");
168
+ }
169
+ commit() {
170
+ if (this.committed) {
171
+ return;
172
+ }
173
+ // commit all rows
174
+ this._rows.forEach(cRow => {
175
+ if (cRow) {
176
+ // write the row to the stream
177
+ this._writeRow(cRow);
178
+ }
179
+ });
180
+ // we _cannot_ accept new rows from now on
181
+ this._rows = null;
182
+ if (!this.startedData) {
183
+ this._writeOpenSheetData();
184
+ }
185
+ this._writeCloseSheetData();
186
+ this._writeAutoFilter();
187
+ this._writeMergeCells();
188
+ // for some reason, Excel can't handle dimensions at the bottom of the file
189
+ // this._writeDimensions();
190
+ this._writeHyperlinks();
191
+ this._writeConditionalFormatting();
192
+ this._writeDataValidations();
193
+ this._writeSheetProtection();
194
+ this._writePageMargins();
195
+ this._writePageSetup();
196
+ this._writeBackground();
197
+ this._writeHeaderFooter();
198
+ this._writeRowBreaks();
199
+ // Legacy Data tag for comments
200
+ this._writeLegacyData();
201
+ this._writeCloseWorksheet();
202
+ // signal end of stream to workbook
203
+ this.stream.end();
204
+ this._sheetCommentsWriter.commit();
205
+ // also commit the hyperlinks if any
206
+ this._sheetRelsWriter.commit();
207
+ this.committed = true;
208
+ }
209
+ // return the current dimensions of the writer
210
+ get dimensions() {
211
+ return this._dimensions;
212
+ }
213
+ get views() {
214
+ return this._views;
215
+ }
216
+ // =========================================================================
217
+ // Columns
218
+ // get the current columns array.
219
+ get columns() {
220
+ return this._columns;
221
+ }
222
+ // set the columns from an array of column definitions.
223
+ // Note: any headers defined will overwrite existing values.
224
+ set columns(value) {
225
+ // calculate max header row count
226
+ this._headerRowCount = value.reduce((pv, cv) => {
227
+ const headerCount = (cv.header && 1) || (cv.headers && cv.headers.length) || 0;
228
+ return Math.max(pv, headerCount);
229
+ }, 0);
230
+ // construct Column objects
231
+ let count = 1;
232
+ const columns = (this._columns = []);
233
+ value.forEach(defn => {
234
+ const column = new column_js_1.Column(this, count++, false);
235
+ columns.push(column);
236
+ column.defn = defn;
237
+ });
238
+ }
239
+ getColumnKey(key) {
240
+ return this._keys[key];
241
+ }
242
+ setColumnKey(key, value) {
243
+ this._keys[key] = value;
244
+ }
245
+ deleteColumnKey(key) {
246
+ delete this._keys[key];
247
+ }
248
+ eachColumnKey(f) {
249
+ Object.keys(this._keys).forEach(key => f(this._keys[key], key));
250
+ }
251
+ // get a single column by col number. If it doesn't exist, it and any gaps before it
252
+ // are created.
253
+ getColumn(c) {
254
+ if (typeof c === "string") {
255
+ // if it matches a key'd column, return that
256
+ const col = this._keys[c];
257
+ if (col) {
258
+ return col;
259
+ }
260
+ // otherwise, assume letter
261
+ c = col_cache_js_1.colCache.l2n(c);
262
+ }
263
+ if (!this._columns) {
264
+ this._columns = [];
265
+ }
266
+ if (c > this._columns.length) {
267
+ let n = this._columns.length + 1;
268
+ while (n <= c) {
269
+ this._columns.push(new column_js_1.Column(this, n++));
270
+ }
271
+ }
272
+ return this._columns[c - 1];
273
+ }
274
+ // =========================================================================
275
+ // Rows
276
+ get _nextRow() {
277
+ return this._rowZero + this._rows.length;
278
+ }
279
+ // iterate over every uncommitted row in the worksheet, including maybe empty rows
280
+ eachRow(options, iteratee) {
281
+ if (!iteratee) {
282
+ iteratee = options;
283
+ options = undefined;
284
+ }
285
+ if (options && options.includeEmpty) {
286
+ const n = this._nextRow;
287
+ for (let i = this._rowZero; i < n; i++) {
288
+ iteratee(this.getRow(i), i);
289
+ }
290
+ }
291
+ else {
292
+ this._rows.forEach(row => {
293
+ if (row.hasValues) {
294
+ iteratee(row, row.number);
295
+ }
296
+ });
297
+ }
298
+ }
299
+ _commitRow(cRow) {
300
+ // since rows must be written in order, we commit all rows up till and including cRow
301
+ let found = false;
302
+ while (this._rows.length && !found) {
303
+ const row = this._rows.shift();
304
+ this._rowZero++;
305
+ if (row) {
306
+ this._writeRow(row);
307
+ found = row.number === cRow.number;
308
+ this._rowZero = row.number + 1;
309
+ }
310
+ }
311
+ }
312
+ get lastRow() {
313
+ // returns last uncommitted row
314
+ if (this._rows.length) {
315
+ return this._rows[this._rows.length - 1];
316
+ }
317
+ return undefined;
318
+ }
319
+ // find a row (if exists) by row number
320
+ findRow(rowNumber) {
321
+ const index = rowNumber - this._rowZero;
322
+ return this._rows[index];
323
+ }
324
+ getRow(rowNumber) {
325
+ const index = rowNumber - this._rowZero;
326
+ // may fail if rows have been comitted
327
+ if (index < 0) {
328
+ throw new Error("Out of bounds: this row has been committed");
329
+ }
330
+ let row = this._rows[index];
331
+ if (!row) {
332
+ this._rows[index] = row = new row_js_1.Row(this, rowNumber);
333
+ }
334
+ return row;
335
+ }
336
+ addRow(value) {
337
+ const row = new row_js_1.Row(this, this._nextRow);
338
+ this._rows[row.number - this._rowZero] = row;
339
+ row.values = value;
340
+ return row;
341
+ }
342
+ // ================================================================================
343
+ // Cells
344
+ // returns the cell at [r,c] or address given by r. If not found, return undefined
345
+ findCell(r, c) {
346
+ const address = col_cache_js_1.colCache.getAddress(r, c);
347
+ const row = this.findRow(address.row);
348
+ return row ? row.findCell(address.column) : undefined;
349
+ }
350
+ // return the cell at [r,c] or address given by r. If not found, create a new one.
351
+ getCell(r, c) {
352
+ const address = col_cache_js_1.colCache.getAddress(r, c);
353
+ const row = this.getRow(address.row);
354
+ return row.getCellEx(address);
355
+ }
356
+ mergeCells(...cells) {
357
+ // may fail if rows have been comitted
358
+ const dimensions = new range_js_1.Dimensions(cells);
359
+ // check cells aren't already merged
360
+ this._merges.forEach(merge => {
361
+ if (merge.intersects(dimensions)) {
362
+ throw new Error("Cannot merge already merged cells");
363
+ }
364
+ });
365
+ // apply merge
366
+ const master = this.getCell(dimensions.top, dimensions.left);
367
+ for (let i = dimensions.top; i <= dimensions.bottom; i++) {
368
+ for (let j = dimensions.left; j <= dimensions.right; j++) {
369
+ if (i > dimensions.top || j > dimensions.left) {
370
+ this.getCell(i, j).merge(master);
371
+ }
372
+ }
373
+ }
374
+ // index merge
375
+ this._merges.push(dimensions);
376
+ }
377
+ // ===========================================================================
378
+ // Conditional Formatting
379
+ addConditionalFormatting(cf) {
380
+ this.conditionalFormatting.push(cf);
381
+ }
382
+ removeConditionalFormatting(filter) {
383
+ if (typeof filter === "number") {
384
+ this.conditionalFormatting.splice(filter, 1);
385
+ }
386
+ else if (filter instanceof Function) {
387
+ this.conditionalFormatting = this.conditionalFormatting.filter(filter);
388
+ }
389
+ else {
390
+ this.conditionalFormatting = [];
391
+ }
392
+ }
393
+ // =========================================================================
394
+ addBackgroundImage(imageId) {
395
+ this._background = {
396
+ imageId
397
+ };
398
+ }
399
+ getBackgroundImageId() {
400
+ return this._background && this._background.imageId;
401
+ }
402
+ // =========================================================================
403
+ // Worksheet Protection
404
+ protect(password, options) {
405
+ // TODO: make this function truly async
406
+ // perhaps marshal to worker thread or something
407
+ return new Promise(resolve => {
408
+ this.sheetProtection = {
409
+ sheet: true
410
+ };
411
+ if (options && "spinCount" in options) {
412
+ // force spinCount to be integer >= 0
413
+ options.spinCount = Number.isFinite(options.spinCount)
414
+ ? Math.round(Math.max(0, options.spinCount))
415
+ : 100000;
416
+ }
417
+ if (password) {
418
+ this.sheetProtection.algorithmName = "SHA-512";
419
+ this.sheetProtection.saltValue = encryptor_js_1.Encryptor.randomBytes(16).toString("base64");
420
+ this.sheetProtection.spinCount =
421
+ options && "spinCount" in options ? options.spinCount : 100000; // allow user specified spinCount
422
+ this.sheetProtection.hashValue = encryptor_js_1.Encryptor.convertPasswordToHash(password, "SHA512", this.sheetProtection.saltValue, this.sheetProtection.spinCount);
423
+ }
424
+ if (options) {
425
+ this.sheetProtection = Object.assign(this.sheetProtection, options);
426
+ if (!password && "spinCount" in options) {
427
+ delete this.sheetProtection.spinCount;
428
+ }
429
+ }
430
+ resolve();
431
+ });
432
+ }
433
+ unprotect() {
434
+ this.sheetProtection = null;
435
+ }
436
+ // ================================================================================
437
+ _write(text) {
438
+ xmlBuffer.reset();
439
+ xmlBuffer.addText(text);
440
+ this.stream.write(xmlBuffer);
441
+ }
442
+ _writeSheetProperties(xmlBuf, properties, pageSetup) {
443
+ const sheetPropertiesModel = {
444
+ outlineProperties: properties && properties.outlineProperties,
445
+ tabColor: properties && properties.tabColor,
446
+ pageSetup: pageSetup && pageSetup.fitToPage
447
+ ? {
448
+ fitToPage: pageSetup.fitToPage
449
+ }
450
+ : undefined
451
+ };
452
+ xmlBuf.addText(xform.sheetProperties.toXml(sheetPropertiesModel));
453
+ }
454
+ _writeSheetFormatProperties(xmlBuf, properties) {
455
+ const sheetFormatPropertiesModel = properties
456
+ ? {
457
+ defaultRowHeight: properties.defaultRowHeight,
458
+ dyDescent: properties.dyDescent,
459
+ outlineLevelCol: properties.outlineLevelCol,
460
+ outlineLevelRow: properties.outlineLevelRow
461
+ }
462
+ : undefined;
463
+ if (properties && properties.defaultColWidth) {
464
+ sheetFormatPropertiesModel.defaultColWidth = properties.defaultColWidth;
465
+ }
466
+ xmlBuf.addText(xform.sheetFormatProperties.toXml(sheetFormatPropertiesModel));
467
+ }
468
+ _writeOpenWorksheet() {
469
+ xmlBuffer.reset();
470
+ xmlBuffer.addText('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
471
+ xmlBuffer.addText('<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"' +
472
+ ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"' +
473
+ ' xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"' +
474
+ ' mc:Ignorable="x14ac"' +
475
+ ' xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">');
476
+ this._writeSheetProperties(xmlBuffer, this.properties, this.pageSetup);
477
+ xmlBuffer.addText(xform.sheetViews.toXml(this.views));
478
+ this._writeSheetFormatProperties(xmlBuffer, this.properties);
479
+ this.stream.write(xmlBuffer);
480
+ }
481
+ _writeColumns() {
482
+ const cols = column_js_1.Column.toModel(this.columns);
483
+ if (cols) {
484
+ xform.columns.prepare(cols, { styles: this._workbook.styles });
485
+ this.stream.write(xform.columns.toXml(cols));
486
+ }
487
+ }
488
+ _writeOpenSheetData() {
489
+ this._write("<sheetData>");
490
+ }
491
+ _writeRow(row) {
492
+ if (!this.startedData) {
493
+ this._writeColumns();
494
+ this._writeOpenSheetData();
495
+ this.startedData = true;
496
+ }
497
+ if (row.hasValues || row.height) {
498
+ const { model } = row;
499
+ const options = {
500
+ styles: this._workbook.styles,
501
+ sharedStrings: this.useSharedStrings ? this._workbook.sharedStrings : undefined,
502
+ hyperlinks: this._sheetRelsWriter.hyperlinksProxy,
503
+ merges: this._merges,
504
+ formulae: this._formulae,
505
+ siFormulae: this._siFormulae,
506
+ comments: []
507
+ };
508
+ xform.row.prepare(model, options);
509
+ this.stream.write(xform.row.toXml(model));
510
+ if (options.comments.length) {
511
+ this.hasComments = true;
512
+ this._sheetCommentsWriter.addComments(options.comments);
513
+ }
514
+ }
515
+ }
516
+ _writeCloseSheetData() {
517
+ this._write("</sheetData>");
518
+ }
519
+ _writeMergeCells() {
520
+ if (this._merges.length) {
521
+ xmlBuffer.reset();
522
+ xmlBuffer.addText(`<mergeCells count="${this._merges.length}">`);
523
+ this._merges.forEach(merge => {
524
+ xmlBuffer.addText(`<mergeCell ref="${merge}"/>`);
525
+ });
526
+ xmlBuffer.addText("</mergeCells>");
527
+ this.stream.write(xmlBuffer);
528
+ }
529
+ }
530
+ _writeHyperlinks() {
531
+ this.stream.write(xform.hyperlinks.toXml(this._sheetRelsWriter._hyperlinks));
532
+ }
533
+ _writeConditionalFormatting() {
534
+ const options = {
535
+ styles: this._workbook.styles
536
+ };
537
+ xform.conditionalFormattings.prepare(this.conditionalFormatting, options);
538
+ this.stream.write(xform.conditionalFormattings.toXml(this.conditionalFormatting));
539
+ }
540
+ _writeRowBreaks() {
541
+ this.stream.write(xform.rowBreaks.toXml(this.rowBreaks));
542
+ }
543
+ _writeDataValidations() {
544
+ this.stream.write(xform.dataValidations.toXml(this.dataValidations.model));
545
+ }
546
+ _writeSheetProtection() {
547
+ this.stream.write(xform.sheetProtection.toXml(this.sheetProtection));
548
+ }
549
+ _writePageMargins() {
550
+ this.stream.write(xform.pageMargins.toXml(this.pageSetup.margins));
551
+ }
552
+ _writePageSetup() {
553
+ this.stream.write(xform.pageSeteup.toXml(this.pageSetup));
554
+ }
555
+ _writeHeaderFooter() {
556
+ this.stream.write(xform.headerFooter.toXml(this.headerFooter));
557
+ }
558
+ _writeAutoFilter() {
559
+ this.stream.write(xform.autoFilter.toXml(this.autoFilter));
560
+ }
561
+ _writeBackground() {
562
+ if (this._background) {
563
+ if (this._background.imageId !== undefined) {
564
+ const image = this._workbook.getImage(this._background.imageId);
565
+ const pictureId = this._sheetRelsWriter.addMedia({
566
+ Target: `../media/${image.name}`,
567
+ Type: rel_type_js_1.RelType.Image
568
+ });
569
+ this._background = {
570
+ ...this._background,
571
+ rId: pictureId
572
+ };
573
+ }
574
+ this.stream.write(xform.picture.toXml({ rId: this._background.rId }));
575
+ }
576
+ }
577
+ _writeLegacyData() {
578
+ if (this.hasComments) {
579
+ xmlBuffer.reset();
580
+ xmlBuffer.addText(`<legacyDrawing r:id="${this._sheetCommentsWriter.vmlRelId}"/>`);
581
+ this.stream.write(xmlBuffer);
582
+ }
583
+ }
584
+ _writeDimensions() {
585
+ // for some reason, Excel can't handle dimensions at the bottom of the file
586
+ // and we don't know the dimensions until the commit, so don't write them.
587
+ // this._write('<dimension ref="' + this._dimensions + '"/>');
588
+ }
589
+ _writeCloseWorksheet() {
590
+ this._write("</worksheet>");
591
+ }
592
+ }
593
+ exports.WorksheetWriter = WorksheetWriter;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for ExcelTS
4
+ * This file exports all public types used by the library
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PaperSize = void 0;
8
+ // ============================================================================
9
+ // Paper Size Enum
10
+ // ============================================================================
11
+ var PaperSize;
12
+ (function (PaperSize) {
13
+ PaperSize[PaperSize["Legal"] = 5] = "Legal";
14
+ PaperSize[PaperSize["Executive"] = 7] = "Executive";
15
+ PaperSize[PaperSize["A4"] = 9] = "A4";
16
+ PaperSize[PaperSize["A5"] = 11] = "A5";
17
+ PaperSize[PaperSize["B5"] = 13] = "B5";
18
+ PaperSize[PaperSize["Envelope_10"] = 20] = "Envelope_10";
19
+ PaperSize[PaperSize["Envelope_DL"] = 27] = "Envelope_DL";
20
+ PaperSize[PaperSize["Envelope_C5"] = 28] = "Envelope_C5";
21
+ PaperSize[PaperSize["Envelope_B5"] = 34] = "Envelope_B5";
22
+ PaperSize[PaperSize["Envelope_Monarch"] = 37] = "Envelope_Monarch";
23
+ PaperSize[PaperSize["Double_Japan_Postcard_Rotated"] = 82] = "Double_Japan_Postcard_Rotated";
24
+ PaperSize[PaperSize["K16_197x273_mm"] = 119] = "K16_197x273_mm";
25
+ })(PaperSize || (exports.PaperSize = PaperSize = {}));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bufferToString = bufferToString;
4
+ const textDecoder = typeof global.TextDecoder === "undefined" ? null : new global.TextDecoder("utf-8");
5
+ function bufferToString(chunk) {
6
+ if (typeof chunk === "string") {
7
+ return chunk;
8
+ }
9
+ if (textDecoder) {
10
+ return textDecoder.decode(chunk);
11
+ }
12
+ return chunk.toString();
13
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringToBuffer = stringToBuffer;
4
+ const textEncoder = typeof global.TextEncoder === "undefined" ? null : new global.TextEncoder();
5
+ function stringToBuffer(str) {
6
+ if (typeof str !== "string") {
7
+ return str;
8
+ }
9
+ if (textEncoder) {
10
+ return Buffer.from(textEncoder.encode(str).buffer);
11
+ }
12
+ return Buffer.from(str);
13
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBrowser = void 0;
4
+ exports.isBrowser = typeof window !== "undefined" &&
5
+ typeof document !== "undefined" &&
6
+ typeof navigator !== "undefined";