@cj-tech-master/excelts 1.6.3 → 2.0.0

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 (400) hide show
  1. package/README.md +139 -24
  2. package/README_zh.md +140 -26
  3. package/dist/browser/excelts.esm.js +18468 -0
  4. package/dist/browser/excelts.esm.js.map +1 -0
  5. package/dist/browser/excelts.esm.min.js +125 -0
  6. package/dist/browser/excelts.iife.js +13107 -47146
  7. package/dist/browser/excelts.iife.js.map +1 -1
  8. package/dist/browser/excelts.iife.min.js +24 -106
  9. package/dist/cjs/csv/csv-core.js +701 -0
  10. package/dist/cjs/csv/csv-stream.js +646 -0
  11. package/dist/cjs/csv/csv.base.js +137 -0
  12. package/dist/cjs/csv/csv.browser.js +68 -0
  13. package/dist/cjs/csv/csv.js +218 -162
  14. package/dist/cjs/doc/anchor.js +2 -2
  15. package/dist/cjs/doc/cell.js +22 -22
  16. package/dist/cjs/doc/column.js +28 -7
  17. package/dist/cjs/doc/data-validations.js +3 -3
  18. package/dist/cjs/doc/defined-names.js +13 -13
  19. package/dist/cjs/doc/image.js +7 -7
  20. package/dist/cjs/doc/modelcontainer.js +2 -2
  21. package/dist/cjs/doc/note.js +2 -2
  22. package/dist/cjs/doc/pivot-table.js +5 -5
  23. package/dist/cjs/doc/range.js +11 -11
  24. package/dist/cjs/doc/row.js +16 -16
  25. package/dist/cjs/doc/table.js +5 -5
  26. package/dist/cjs/doc/workbook.base.js +211 -0
  27. package/dist/cjs/doc/workbook.browser.js +62 -0
  28. package/dist/cjs/doc/workbook.js +68 -179
  29. package/dist/cjs/doc/worksheet.js +45 -41
  30. package/dist/cjs/index.js +49 -32
  31. package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
  32. package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
  33. package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
  34. package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
  35. package/dist/cjs/stream/xlsx/workbook-writer.js +38 -38
  36. package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
  37. package/dist/cjs/stream/xlsx/worksheet-writer.js +67 -60
  38. package/dist/cjs/utils/browser-buffer.js +75 -0
  39. package/dist/cjs/utils/cell-format.js +2 -2
  40. package/dist/cjs/utils/cell-matrix.js +5 -5
  41. package/dist/cjs/utils/datetime.js +648 -0
  42. package/dist/cjs/utils/encryptor.browser.js +240 -0
  43. package/dist/cjs/utils/parse-sax.js +1191 -13
  44. package/dist/cjs/utils/shared-formula.js +5 -5
  45. package/dist/cjs/utils/sheet-utils.js +13 -13
  46. package/dist/cjs/utils/stream-buf.browser.js +355 -0
  47. package/dist/cjs/utils/stream-buf.js +5 -5
  48. package/dist/cjs/utils/unzip/extract.js +11 -11
  49. package/dist/cjs/utils/unzip/index.js +21 -21
  50. package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
  51. package/dist/cjs/utils/unzip/parse.js +16 -16
  52. package/dist/cjs/utils/unzip/zip-parser.js +14 -3
  53. package/dist/cjs/utils/utils.base.js +161 -0
  54. package/dist/cjs/utils/utils.browser.js +89 -0
  55. package/dist/cjs/utils/utils.js +46 -154
  56. package/dist/cjs/utils/xml-stream.js +3 -3
  57. package/dist/cjs/utils/zip/compress.base.js +88 -0
  58. package/dist/cjs/utils/zip/compress.browser.js +127 -0
  59. package/dist/cjs/utils/zip/compress.js +18 -198
  60. package/dist/cjs/utils/zip/crc32.browser.js +88 -0
  61. package/dist/cjs/utils/zip/deflate-fallback.js +575 -0
  62. package/dist/cjs/utils/zip/index.js +17 -17
  63. package/dist/cjs/utils/zip/streaming-zip.js +264 -0
  64. package/dist/cjs/utils/zip/zip-builder.js +10 -10
  65. package/dist/cjs/utils/zip-stream.browser.js +135 -0
  66. package/dist/cjs/utils/zip-stream.js +4 -4
  67. package/dist/cjs/xlsx/xform/base-xform.js +4 -4
  68. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
  69. package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
  70. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
  71. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
  72. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
  73. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
  74. package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
  75. package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
  76. package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
  77. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
  78. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
  79. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
  80. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
  81. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
  82. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
  83. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
  84. package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
  85. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
  86. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
  87. package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
  88. package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
  89. package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
  90. package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
  91. package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
  92. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
  93. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
  94. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
  95. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
  96. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
  97. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
  98. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
  99. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
  100. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
  101. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
  102. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
  103. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
  104. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
  105. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
  106. package/dist/cjs/xlsx/xform/list-xform.js +2 -2
  107. package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
  108. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
  109. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
  110. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
  111. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
  112. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
  113. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
  114. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
  115. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
  116. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
  117. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
  118. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
  119. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
  120. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
  121. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
  122. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
  123. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
  124. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
  125. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
  126. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
  127. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
  128. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
  129. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
  130. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
  131. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
  132. package/dist/cjs/xlsx/xform/sheet/col-breaks-xform.js +38 -0
  133. package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
  134. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
  135. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
  136. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
  137. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
  138. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
  139. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
  140. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
  141. package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
  142. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
  143. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +15 -3
  144. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
  145. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
  146. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
  147. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
  148. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
  149. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +15 -17
  150. package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
  151. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
  152. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
  153. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
  154. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
  155. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
  156. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +75 -70
  157. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
  158. package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
  159. package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
  160. package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
  161. package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
  162. package/dist/cjs/xlsx/xform/static-xform.js +4 -4
  163. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
  164. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
  165. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
  166. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
  167. package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
  168. package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
  169. package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
  170. package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
  171. package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
  172. package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
  173. package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
  174. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
  175. package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
  176. package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
  177. package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
  178. package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
  179. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
  180. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
  181. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
  182. package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
  183. package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
  184. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
  185. package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
  186. package/dist/cjs/xlsx/xlsx.base.js +742 -0
  187. package/dist/cjs/xlsx/xlsx.browser.js +162 -0
  188. package/dist/cjs/xlsx/xlsx.js +118 -892
  189. package/dist/esm/csv/csv-core.js +694 -0
  190. package/dist/esm/csv/csv-stream.js +638 -0
  191. package/dist/esm/csv/csv.base.js +127 -0
  192. package/dist/esm/csv/csv.browser.js +65 -0
  193. package/dist/esm/csv/csv.js +181 -159
  194. package/dist/esm/doc/column.js +21 -0
  195. package/dist/esm/doc/workbook.base.js +207 -0
  196. package/dist/esm/doc/workbook.browser.js +59 -0
  197. package/dist/esm/doc/workbook.js +64 -175
  198. package/dist/esm/doc/worksheet.js +4 -0
  199. package/dist/esm/index.browser.js +33 -1
  200. package/dist/esm/index.js +23 -8
  201. package/dist/esm/local.js +0 -1
  202. package/dist/esm/stream/xlsx/workbook-writer.js +1 -1
  203. package/dist/esm/stream/xlsx/worksheet-writer.js +8 -1
  204. package/dist/esm/utils/browser-buffer.js +67 -0
  205. package/dist/esm/utils/datetime.js +639 -0
  206. package/dist/esm/utils/encryptor.browser.js +237 -0
  207. package/dist/esm/utils/parse-sax.js +1188 -12
  208. package/dist/esm/utils/stream-buf.browser.js +352 -0
  209. package/dist/esm/utils/unzip/zip-parser.js +11 -0
  210. package/dist/esm/utils/utils.base.js +142 -0
  211. package/dist/esm/utils/utils.browser.js +68 -0
  212. package/dist/esm/utils/utils.js +15 -123
  213. package/dist/esm/utils/zip/compress.base.js +83 -0
  214. package/dist/esm/utils/zip/compress.browser.js +121 -0
  215. package/dist/esm/utils/zip/compress.js +16 -164
  216. package/dist/esm/utils/zip/crc32.browser.js +82 -0
  217. package/dist/esm/utils/zip/deflate-fallback.js +570 -0
  218. package/dist/esm/utils/zip/streaming-zip.js +259 -0
  219. package/dist/esm/utils/zip-stream.browser.js +132 -0
  220. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
  221. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
  222. package/dist/esm/xlsx/xform/sheet/col-breaks-xform.js +35 -0
  223. package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +13 -1
  224. package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +11 -13
  225. package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +7 -2
  226. package/dist/esm/xlsx/xlsx.base.js +739 -0
  227. package/dist/esm/xlsx/xlsx.browser.js +159 -0
  228. package/dist/esm/xlsx/xlsx.js +114 -888
  229. package/dist/types/csv/csv-core.d.ts +207 -0
  230. package/dist/types/csv/csv-stream.d.ts +114 -0
  231. package/dist/types/csv/csv.base.d.ts +62 -0
  232. package/dist/types/csv/csv.browser.d.ts +33 -0
  233. package/dist/types/csv/csv.d.ts +97 -71
  234. package/dist/types/doc/anchor.d.ts +1 -1
  235. package/dist/types/doc/cell.d.ts +7 -7
  236. package/dist/types/doc/column.d.ts +9 -3
  237. package/dist/types/doc/defined-names.d.ts +4 -4
  238. package/dist/types/doc/image.d.ts +2 -2
  239. package/dist/types/doc/modelcontainer.d.ts +1 -1
  240. package/dist/types/doc/pivot-table.d.ts +1 -1
  241. package/dist/types/doc/range.d.ts +1 -1
  242. package/dist/types/doc/row.d.ts +3 -3
  243. package/dist/types/doc/table.d.ts +2 -2
  244. package/dist/types/doc/workbook.base.d.ts +111 -0
  245. package/dist/types/doc/workbook.browser.d.ts +38 -0
  246. package/dist/types/doc/workbook.d.ts +62 -92
  247. package/dist/types/doc/worksheet.d.ts +12 -10
  248. package/dist/types/index.browser.d.ts +19 -5
  249. package/dist/types/index.d.ts +24 -23
  250. package/dist/types/local.d.ts +0 -1
  251. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
  252. package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
  253. package/dist/types/stream/xlsx/workbook-writer.d.ts +7 -7
  254. package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
  255. package/dist/types/stream/xlsx/worksheet-writer.d.ts +11 -9
  256. package/dist/types/types.d.ts +6 -0
  257. package/dist/types/utils/browser-buffer.d.ts +28 -0
  258. package/dist/types/utils/col-cache.d.ts +1 -1
  259. package/dist/types/utils/datetime.d.ts +85 -0
  260. package/dist/types/utils/encryptor.browser.d.ts +28 -0
  261. package/dist/types/utils/parse-sax.d.ts +108 -1
  262. package/dist/types/utils/sheet-utils.d.ts +3 -3
  263. package/dist/types/utils/stream-buf.browser.d.ts +41 -0
  264. package/dist/types/utils/unzip/extract.d.ts +6 -6
  265. package/dist/types/utils/unzip/index.d.ts +8 -8
  266. package/dist/types/utils/unzip/parse.d.ts +3 -3
  267. package/dist/types/utils/unzip/zip-parser.d.ts +5 -0
  268. package/dist/types/utils/utils.base.d.ts +29 -0
  269. package/dist/types/utils/utils.browser.d.ts +29 -0
  270. package/dist/types/utils/utils.d.ts +6 -25
  271. package/dist/types/utils/zip/compress.base.d.ts +45 -0
  272. package/dist/types/utils/zip/compress.browser.d.ts +63 -0
  273. package/dist/types/utils/zip/compress.d.ts +13 -45
  274. package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
  275. package/dist/types/utils/zip/deflate-fallback.d.ts +39 -0
  276. package/dist/types/utils/zip/index.d.ts +5 -5
  277. package/dist/types/utils/zip/streaming-zip.d.ts +96 -0
  278. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  279. package/dist/types/utils/zip-stream.browser.d.ts +39 -0
  280. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  284. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  288. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  289. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  290. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  294. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  299. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  300. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  302. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  304. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  305. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  306. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  307. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  308. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  309. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  310. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  311. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  312. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  313. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  314. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  315. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  316. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  317. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  318. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  320. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  321. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  322. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  323. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  324. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  325. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  326. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  327. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  328. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  329. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  330. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  331. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  332. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  333. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  334. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  335. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  336. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  337. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  338. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  339. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  340. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  341. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  342. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  343. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  344. package/dist/types/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
  345. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  346. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  347. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  348. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  349. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  350. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  351. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  352. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  353. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  354. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +5 -1
  355. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  356. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  357. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  358. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  359. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  360. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +5 -1
  361. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  362. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  363. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  364. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  365. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  366. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  367. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  368. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  369. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  370. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  371. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  372. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  373. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  374. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  375. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  376. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  377. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  378. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  379. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  380. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  381. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  382. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  383. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  384. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  385. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  386. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  387. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  388. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  389. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  390. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  391. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  392. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  393. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  394. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  395. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  396. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  397. package/dist/types/xlsx/xlsx.base.d.ts +134 -0
  398. package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
  399. package/dist/types/xlsx/xlsx.d.ts +20 -80
  400. package/package.json +16 -39
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * WorkbookBase - Platform-independent base class for Workbook
4
+ *
5
+ * This file contains all the shared logic between Node.js and Browser versions.
6
+ * Platform-specific features (xlsx, csv, streaming) are added by subclasses.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.WorkbookBase = void 0;
10
+ const worksheet_1 = require("./worksheet");
11
+ const defined_names_1 = require("./defined-names");
12
+ // =============================================================================
13
+ // WorkbookBase Class
14
+ // =============================================================================
15
+ /**
16
+ * Base class for Workbook containing all platform-independent functionality.
17
+ *
18
+ * Subclasses add:
19
+ * - Node.js: xlsx (full), csv, streaming (createStreamWriter/Reader)
20
+ * - Browser: xlsx (buffer only), no csv, no streaming
21
+ */
22
+ class WorkbookBase {
23
+ constructor() {
24
+ this.category = "";
25
+ this.company = "";
26
+ this.created = new Date();
27
+ this.description = "";
28
+ this.keywords = "";
29
+ this.manager = "";
30
+ this.modified = this.created;
31
+ this.properties = {};
32
+ this.calcProperties = {};
33
+ this._worksheets = [];
34
+ this.subject = "";
35
+ this.title = "";
36
+ this.views = [];
37
+ this.media = [];
38
+ this.pivotTables = [];
39
+ this._definedNames = new defined_names_1.DefinedNames();
40
+ }
41
+ // ===========================================================================
42
+ // Worksheet Management
43
+ // ===========================================================================
44
+ get nextId() {
45
+ // Find the next unique spot to add worksheet
46
+ for (let i = 1; i < this._worksheets.length; i++) {
47
+ if (!this._worksheets[i]) {
48
+ return i;
49
+ }
50
+ }
51
+ return this._worksheets.length || 1;
52
+ }
53
+ /**
54
+ * Add a new worksheet and return a reference to it
55
+ */
56
+ addWorksheet(name, options) {
57
+ const id = this.nextId;
58
+ const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
59
+ const worksheetOptions = {
60
+ ...options,
61
+ id,
62
+ name,
63
+ orderNo: lastOrderNo + 1,
64
+ workbook: this
65
+ };
66
+ const worksheet = new worksheet_1.Worksheet(worksheetOptions);
67
+ this._worksheets[id] = worksheet;
68
+ return worksheet;
69
+ }
70
+ removeWorksheetEx(worksheet) {
71
+ delete this._worksheets[worksheet.id];
72
+ }
73
+ removeWorksheet(id) {
74
+ const worksheet = this.getWorksheet(id);
75
+ if (worksheet) {
76
+ worksheet.destroy();
77
+ }
78
+ }
79
+ /**
80
+ * Fetch sheet by name or id
81
+ */
82
+ getWorksheet(id) {
83
+ if (id === undefined) {
84
+ return this._worksheets.find(Boolean);
85
+ }
86
+ if (typeof id === "number") {
87
+ return this._worksheets[id];
88
+ }
89
+ if (typeof id === "string") {
90
+ return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
91
+ }
92
+ return undefined;
93
+ }
94
+ /**
95
+ * Return a clone of worksheets in order
96
+ */
97
+ get worksheets() {
98
+ return this._worksheets
99
+ .slice(1)
100
+ .sort((a, b) => a.orderNo - b.orderNo)
101
+ .filter(Boolean);
102
+ }
103
+ /**
104
+ * Iterate over all sheets.
105
+ *
106
+ * Note: `workbook.worksheets.forEach` will still work but this is better.
107
+ */
108
+ eachSheet(callback) {
109
+ this.worksheets.forEach(sheet => {
110
+ callback(sheet, sheet.id);
111
+ });
112
+ }
113
+ // ===========================================================================
114
+ // Defined Names
115
+ // ===========================================================================
116
+ get definedNames() {
117
+ return this._definedNames;
118
+ }
119
+ // ===========================================================================
120
+ // Themes
121
+ // ===========================================================================
122
+ clearThemes() {
123
+ // Note: themes are not an exposed feature, meddle at your peril!
124
+ this._themes = undefined;
125
+ }
126
+ // ===========================================================================
127
+ // Images
128
+ // ===========================================================================
129
+ /**
130
+ * Add Image to Workbook and return the id
131
+ */
132
+ addImage(image) {
133
+ const id = this.media.length;
134
+ this.media.push({ ...image, type: "image" });
135
+ return id;
136
+ }
137
+ getImage(id) {
138
+ return this.media[Number(id)];
139
+ }
140
+ // ===========================================================================
141
+ // Model (Serialization)
142
+ // ===========================================================================
143
+ get model() {
144
+ return {
145
+ creator: this.creator || "Unknown",
146
+ lastModifiedBy: this.lastModifiedBy || "Unknown",
147
+ lastPrinted: this.lastPrinted,
148
+ created: this.created,
149
+ modified: this.modified,
150
+ properties: this.properties,
151
+ worksheets: this.worksheets.map(worksheet => worksheet.model),
152
+ sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
153
+ definedNames: this._definedNames.model,
154
+ views: this.views,
155
+ company: this.company,
156
+ manager: this.manager,
157
+ title: this.title,
158
+ subject: this.subject,
159
+ keywords: this.keywords,
160
+ category: this.category,
161
+ description: this.description,
162
+ language: this.language,
163
+ revision: this.revision,
164
+ contentStatus: this.contentStatus,
165
+ themes: this._themes,
166
+ media: this.media,
167
+ pivotTables: this.pivotTables,
168
+ calcProperties: this.calcProperties
169
+ };
170
+ }
171
+ set model(value) {
172
+ this.creator = value.creator;
173
+ this.lastModifiedBy = value.lastModifiedBy;
174
+ this.lastPrinted = value.lastPrinted;
175
+ this.created = value.created;
176
+ this.modified = value.modified;
177
+ this.company = value.company;
178
+ this.manager = value.manager;
179
+ this.title = value.title;
180
+ this.subject = value.subject;
181
+ this.keywords = value.keywords;
182
+ this.category = value.category;
183
+ this.description = value.description;
184
+ this.language = value.language;
185
+ this.revision = value.revision;
186
+ this.contentStatus = value.contentStatus;
187
+ this.properties = value.properties;
188
+ this.calcProperties = value.calcProperties;
189
+ this._worksheets = [];
190
+ value.worksheets.forEach(worksheetModel => {
191
+ const { id, name, state } = worksheetModel;
192
+ const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
193
+ const worksheet = (this._worksheets[id] = new worksheet_1.Worksheet({
194
+ id,
195
+ name,
196
+ orderNo: orderNo !== -1 ? orderNo : undefined,
197
+ state,
198
+ workbook: this
199
+ }));
200
+ worksheet.model = worksheetModel;
201
+ });
202
+ this._definedNames.model = value.definedNames;
203
+ this.views = value.views;
204
+ this._themes = value.themes;
205
+ this.media = value.media || [];
206
+ // Handle pivot tables - either newly created or loaded from file
207
+ // Loaded pivot tables come from loadedPivotTables after reconciliation
208
+ this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
209
+ }
210
+ }
211
+ exports.WorkbookBase = WorkbookBase;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Workbook Browser version - No Node.js dependencies
4
+ *
5
+ * Extends WorkbookBase with:
6
+ * - xlsx: Buffer-based operations (load, writeBuffer)
7
+ * - csv: Buffer-based operations (load, writeString, writeBuffer)
8
+ * - streaming: NOT supported (throws error)
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Workbook = void 0;
12
+ const workbook_base_1 = require("./workbook.base");
13
+ const xlsx_browser_1 = require("../xlsx/xlsx.browser");
14
+ const csv_browser_1 = require("../csv/csv.browser");
15
+ class Workbook extends workbook_base_1.WorkbookBase {
16
+ /**
17
+ * xlsx file format operations
18
+ * Supports: load (buffer), writeBuffer
19
+ * NOT supported: readFile, writeFile, read (stream), write (stream)
20
+ */
21
+ get xlsx() {
22
+ if (!this._xlsx) {
23
+ this._xlsx = new xlsx_browser_1.XLSX(this);
24
+ }
25
+ return this._xlsx;
26
+ }
27
+ /**
28
+ * CSV file format operations
29
+ * Supports: load (string/buffer), writeString, writeBuffer
30
+ * NOT supported: readFile, writeFile, read (stream), write (stream)
31
+ */
32
+ get csv() {
33
+ if (!this._csv) {
34
+ this._csv = new csv_browser_1.CSV(this);
35
+ }
36
+ return this._csv;
37
+ }
38
+ // ===========================================================================
39
+ // Static Factory Methods - NOT available in browser
40
+ // TypeScript users: These methods don't exist on this type
41
+ // JavaScript users: These methods throw helpful errors
42
+ // ===========================================================================
43
+ /**
44
+ * @deprecated Streaming is not available in browser
45
+ * @throws Error with helpful message
46
+ */
47
+ static createStreamWriter(_options) {
48
+ throw new Error("Streaming workbook writer is not available in browser. " +
49
+ "Use `new Workbook()` with `xlsx.writeBuffer()` instead, " +
50
+ "or import from 'excelts' (Node.js) for streaming support.");
51
+ }
52
+ /**
53
+ * @deprecated Streaming is not available in browser
54
+ * @throws Error with helpful message
55
+ */
56
+ static createStreamReader(_input, _options) {
57
+ throw new Error("Streaming workbook reader is not available in browser. " +
58
+ "Use `new Workbook()` with `xlsx.load()` instead, " +
59
+ "or import from 'excelts' (Node.js) for streaming support.");
60
+ }
61
+ }
62
+ exports.Workbook = Workbook;
@@ -1,207 +1,96 @@
1
1
  "use strict";
2
+ /**
3
+ * Workbook - Node.js version with full functionality
4
+ *
5
+ * Extends WorkbookBase with:
6
+ * - xlsx: Full file/stream/buffer support
7
+ * - csv: CSV read/write support
8
+ * - streaming: createStreamWriter/createStreamReader for large files
9
+ */
2
10
  Object.defineProperty(exports, "__esModule", { value: true });
3
11
  exports.Workbook = void 0;
4
- const worksheet_js_1 = require("./worksheet");
5
- const defined_names_js_1 = require("./defined-names");
6
- const xlsx_js_1 = require("../xlsx/xlsx");
7
- const csv_js_1 = require("../csv/csv");
8
- // Workbook requirements
9
- // Load and Save from file and stream
10
- // Access/Add/Delete individual worksheets
11
- // Manage String table, Hyperlink table, etc.
12
- // Manage scaffolding for contained objects to write to/read from
13
- class Workbook {
14
- constructor() {
15
- this.category = "";
16
- this.company = "";
17
- this.created = new Date();
18
- this.description = "";
19
- this.keywords = "";
20
- this.manager = "";
21
- this.modified = this.created;
22
- this.properties = {};
23
- this.calcProperties = {};
24
- this._worksheets = [];
25
- this.subject = "";
26
- this.title = "";
27
- this.views = [];
28
- this.media = [];
29
- this.pivotTables = [];
30
- this._definedNames = new defined_names_js_1.DefinedNames();
31
- }
12
+ const workbook_base_1 = require("./workbook.base");
13
+ const xlsx_1 = require("../xlsx/xlsx");
14
+ const csv_1 = require("../csv/csv");
15
+ const workbook_writer_1 = require("../stream/xlsx/workbook-writer");
16
+ const workbook_reader_1 = require("../stream/xlsx/workbook-reader");
17
+ class Workbook extends workbook_base_1.WorkbookBase {
32
18
  /**
33
19
  * xlsx file format operations
20
+ * Supports: readFile, writeFile, read (stream), write (stream), load (buffer), writeBuffer
34
21
  */
35
22
  get xlsx() {
36
23
  if (!this._xlsx) {
37
- this._xlsx = new xlsx_js_1.XLSX(this);
24
+ this._xlsx = new xlsx_1.XLSX(this);
38
25
  }
39
26
  return this._xlsx;
40
27
  }
41
28
  /**
42
29
  * csv file format operations
30
+ * Supports: readFile, writeFile, read (stream), write (stream)
43
31
  */
44
32
  get csv() {
45
33
  if (!this._csv) {
46
- this._csv = new csv_js_1.CSV(this);
34
+ this._csv = new csv_1.CSV(this);
47
35
  }
48
36
  return this._csv;
49
37
  }
50
- get nextId() {
51
- // find the next unique spot to add worksheet
52
- for (let i = 1; i < this._worksheets.length; i++) {
53
- if (!this._worksheets[i]) {
54
- return i;
55
- }
56
- }
57
- return this._worksheets.length || 1;
58
- }
59
- /**
60
- * Add a new worksheet and return a reference to it
61
- */
62
- addWorksheet(name, options) {
63
- const id = this.nextId;
64
- const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
65
- const worksheetOptions = {
66
- ...options,
67
- id,
68
- name,
69
- orderNo: lastOrderNo + 1,
70
- workbook: this
71
- };
72
- const worksheet = new worksheet_js_1.Worksheet(worksheetOptions);
73
- this._worksheets[id] = worksheet;
74
- return worksheet;
75
- }
76
- removeWorksheetEx(worksheet) {
77
- delete this._worksheets[worksheet.id];
78
- }
79
- removeWorksheet(id) {
80
- const worksheet = this.getWorksheet(id);
81
- if (worksheet) {
82
- worksheet.destroy();
83
- }
84
- }
85
- /**
86
- * Fetch sheet by name or id
87
- */
88
- getWorksheet(id) {
89
- if (id === undefined) {
90
- return this._worksheets.find(Boolean);
91
- }
92
- if (typeof id === "number") {
93
- return this._worksheets[id];
94
- }
95
- if (typeof id === "string") {
96
- return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
97
- }
98
- return undefined;
99
- }
38
+ // ===========================================================================
39
+ // Static Factory Methods for Streaming (Node.js only)
40
+ // ===========================================================================
100
41
  /**
101
- * Return a clone of worksheets in order
102
- */
103
- get worksheets() {
104
- // return a clone of _worksheets
105
- return this._worksheets
106
- .slice(1)
107
- .sort((a, b) => a.orderNo - b.orderNo)
108
- .filter(Boolean);
109
- }
110
- /**
111
- * Iterate over all sheets.
42
+ * Create a streaming workbook writer for large files.
43
+ * This is more memory-efficient than using Workbook for large datasets.
44
+ *
45
+ * @param options - Options for the workbook writer
46
+ * @returns A new WorkbookWriter instance
112
47
  *
113
- * Note: `workbook.worksheets.forEach` will still work but this is better.
48
+ * @example
49
+ * ```ts
50
+ * const writer = Workbook.createStreamWriter({ filename: "large-file.xlsx" });
51
+ * const sheet = writer.addWorksheet("Sheet1");
52
+ * for (let i = 0; i < 1000000; i++) {
53
+ * sheet.addRow([i, `Row ${i}`]).commit();
54
+ * }
55
+ * await writer.commit();
56
+ * ```
114
57
  */
115
- eachSheet(callback) {
116
- this.worksheets.forEach(sheet => {
117
- callback(sheet, sheet.id);
118
- });
119
- }
120
- get definedNames() {
121
- return this._definedNames;
122
- }
123
- clearThemes() {
124
- // Note: themes are not an exposed feature, meddle at your peril!
125
- this._themes = undefined;
58
+ static createStreamWriter(options) {
59
+ return new workbook_writer_1.WorkbookWriter(options);
126
60
  }
127
61
  /**
128
- * Add Image to Workbook and return the id
62
+ * Create a streaming workbook reader for large files.
63
+ * This is more memory-efficient than using Workbook.xlsx.readFile for large datasets.
64
+ *
65
+ * @param input - File path or readable stream
66
+ * @param options - Options for the workbook reader
67
+ * @returns A new WorkbookReader instance
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const reader = Workbook.createStreamReader("large-file.xlsx");
72
+ * for await (const event of reader) {
73
+ * if (event.eventType === "worksheet") {
74
+ * const worksheet = event.value;
75
+ * for await (const row of worksheet) {
76
+ * console.log(row.values);
77
+ * }
78
+ * }
79
+ * }
80
+ * ```
129
81
  */
130
- addImage(image) {
131
- // TODO: validation?
132
- const id = this.media.length;
133
- this.media.push({ ...image, type: "image" });
134
- return id;
135
- }
136
- getImage(id) {
137
- return this.media[Number(id)];
138
- }
139
- get model() {
140
- return {
141
- creator: this.creator || "Unknown",
142
- lastModifiedBy: this.lastModifiedBy || "Unknown",
143
- lastPrinted: this.lastPrinted,
144
- created: this.created,
145
- modified: this.modified,
146
- properties: this.properties,
147
- worksheets: this.worksheets.map(worksheet => worksheet.model),
148
- sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
149
- definedNames: this._definedNames.model,
150
- views: this.views,
151
- company: this.company,
152
- manager: this.manager,
153
- title: this.title,
154
- subject: this.subject,
155
- keywords: this.keywords,
156
- category: this.category,
157
- description: this.description,
158
- language: this.language,
159
- revision: this.revision,
160
- contentStatus: this.contentStatus,
161
- themes: this._themes,
162
- media: this.media,
163
- pivotTables: this.pivotTables,
164
- calcProperties: this.calcProperties
165
- };
166
- }
167
- set model(value) {
168
- this.creator = value.creator;
169
- this.lastModifiedBy = value.lastModifiedBy;
170
- this.lastPrinted = value.lastPrinted;
171
- this.created = value.created;
172
- this.modified = value.modified;
173
- this.company = value.company;
174
- this.manager = value.manager;
175
- this.title = value.title;
176
- this.subject = value.subject;
177
- this.keywords = value.keywords;
178
- this.category = value.category;
179
- this.description = value.description;
180
- this.language = value.language;
181
- this.revision = value.revision;
182
- this.contentStatus = value.contentStatus;
183
- this.properties = value.properties;
184
- this.calcProperties = value.calcProperties;
185
- this._worksheets = [];
186
- value.worksheets.forEach(worksheetModel => {
187
- const { id, name, state } = worksheetModel;
188
- const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
189
- const worksheet = (this._worksheets[id] = new worksheet_js_1.Worksheet({
190
- id,
191
- name,
192
- orderNo: orderNo !== -1 ? orderNo : undefined,
193
- state,
194
- workbook: this
195
- }));
196
- worksheet.model = worksheetModel;
197
- });
198
- this._definedNames.model = value.definedNames;
199
- this.views = value.views;
200
- this._themes = value.themes;
201
- this.media = value.media || [];
202
- // Handle pivot tables - either newly created or loaded from file
203
- // Loaded pivot tables come from loadedPivotTables after reconciliation
204
- this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
82
+ static createStreamReader(input, options) {
83
+ return new workbook_reader_1.WorkbookReader(input, options);
205
84
  }
206
85
  }
207
86
  exports.Workbook = Workbook;
87
+ /**
88
+ * Streaming workbook writer class for large files.
89
+ * @example new Workbook.Writer({ filename: "large.xlsx" })
90
+ */
91
+ Workbook.Writer = workbook_writer_1.WorkbookWriter;
92
+ /**
93
+ * Streaming workbook reader class for large files.
94
+ * @example new Workbook.Reader("large.xlsx")
95
+ */
96
+ Workbook.Reader = workbook_reader_1.WorkbookReader;