@cj-tech-master/excelts 1.6.3 → 2.0.0-canary.20251228013952.4f2c3c6

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 +499 -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 +493 -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 +56 -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,207 @@
1
+ /**
2
+ * WorkbookBase - Platform-independent base class for Workbook
3
+ *
4
+ * This file contains all the shared logic between Node.js and Browser versions.
5
+ * Platform-specific features (xlsx, csv, streaming) are added by subclasses.
6
+ */
7
+ import { Worksheet } from "./worksheet.js";
8
+ import { DefinedNames } from "./defined-names.js";
9
+ // =============================================================================
10
+ // WorkbookBase Class
11
+ // =============================================================================
12
+ /**
13
+ * Base class for Workbook containing all platform-independent functionality.
14
+ *
15
+ * Subclasses add:
16
+ * - Node.js: xlsx (full), csv, streaming (createStreamWriter/Reader)
17
+ * - Browser: xlsx (buffer only), no csv, no streaming
18
+ */
19
+ export class WorkbookBase {
20
+ constructor() {
21
+ this.category = "";
22
+ this.company = "";
23
+ this.created = new Date();
24
+ this.description = "";
25
+ this.keywords = "";
26
+ this.manager = "";
27
+ this.modified = this.created;
28
+ this.properties = {};
29
+ this.calcProperties = {};
30
+ this._worksheets = [];
31
+ this.subject = "";
32
+ this.title = "";
33
+ this.views = [];
34
+ this.media = [];
35
+ this.pivotTables = [];
36
+ this._definedNames = new DefinedNames();
37
+ }
38
+ // ===========================================================================
39
+ // Worksheet Management
40
+ // ===========================================================================
41
+ get nextId() {
42
+ // Find the next unique spot to add worksheet
43
+ for (let i = 1; i < this._worksheets.length; i++) {
44
+ if (!this._worksheets[i]) {
45
+ return i;
46
+ }
47
+ }
48
+ return this._worksheets.length || 1;
49
+ }
50
+ /**
51
+ * Add a new worksheet and return a reference to it
52
+ */
53
+ addWorksheet(name, options) {
54
+ const id = this.nextId;
55
+ const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
56
+ const worksheetOptions = {
57
+ ...options,
58
+ id,
59
+ name,
60
+ orderNo: lastOrderNo + 1,
61
+ workbook: this
62
+ };
63
+ const worksheet = new Worksheet(worksheetOptions);
64
+ this._worksheets[id] = worksheet;
65
+ return worksheet;
66
+ }
67
+ removeWorksheetEx(worksheet) {
68
+ delete this._worksheets[worksheet.id];
69
+ }
70
+ removeWorksheet(id) {
71
+ const worksheet = this.getWorksheet(id);
72
+ if (worksheet) {
73
+ worksheet.destroy();
74
+ }
75
+ }
76
+ /**
77
+ * Fetch sheet by name or id
78
+ */
79
+ getWorksheet(id) {
80
+ if (id === undefined) {
81
+ return this._worksheets.find(Boolean);
82
+ }
83
+ if (typeof id === "number") {
84
+ return this._worksheets[id];
85
+ }
86
+ if (typeof id === "string") {
87
+ return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
88
+ }
89
+ return undefined;
90
+ }
91
+ /**
92
+ * Return a clone of worksheets in order
93
+ */
94
+ get worksheets() {
95
+ return this._worksheets
96
+ .slice(1)
97
+ .sort((a, b) => a.orderNo - b.orderNo)
98
+ .filter(Boolean);
99
+ }
100
+ /**
101
+ * Iterate over all sheets.
102
+ *
103
+ * Note: `workbook.worksheets.forEach` will still work but this is better.
104
+ */
105
+ eachSheet(callback) {
106
+ this.worksheets.forEach(sheet => {
107
+ callback(sheet, sheet.id);
108
+ });
109
+ }
110
+ // ===========================================================================
111
+ // Defined Names
112
+ // ===========================================================================
113
+ get definedNames() {
114
+ return this._definedNames;
115
+ }
116
+ // ===========================================================================
117
+ // Themes
118
+ // ===========================================================================
119
+ clearThemes() {
120
+ // Note: themes are not an exposed feature, meddle at your peril!
121
+ this._themes = undefined;
122
+ }
123
+ // ===========================================================================
124
+ // Images
125
+ // ===========================================================================
126
+ /**
127
+ * Add Image to Workbook and return the id
128
+ */
129
+ addImage(image) {
130
+ const id = this.media.length;
131
+ this.media.push({ ...image, type: "image" });
132
+ return id;
133
+ }
134
+ getImage(id) {
135
+ return this.media[Number(id)];
136
+ }
137
+ // ===========================================================================
138
+ // Model (Serialization)
139
+ // ===========================================================================
140
+ get model() {
141
+ return {
142
+ creator: this.creator || "Unknown",
143
+ lastModifiedBy: this.lastModifiedBy || "Unknown",
144
+ lastPrinted: this.lastPrinted,
145
+ created: this.created,
146
+ modified: this.modified,
147
+ properties: this.properties,
148
+ worksheets: this.worksheets.map(worksheet => worksheet.model),
149
+ sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
150
+ definedNames: this._definedNames.model,
151
+ views: this.views,
152
+ company: this.company,
153
+ manager: this.manager,
154
+ title: this.title,
155
+ subject: this.subject,
156
+ keywords: this.keywords,
157
+ category: this.category,
158
+ description: this.description,
159
+ language: this.language,
160
+ revision: this.revision,
161
+ contentStatus: this.contentStatus,
162
+ themes: this._themes,
163
+ media: this.media,
164
+ pivotTables: this.pivotTables,
165
+ calcProperties: this.calcProperties
166
+ };
167
+ }
168
+ set model(value) {
169
+ this.creator = value.creator;
170
+ this.lastModifiedBy = value.lastModifiedBy;
171
+ this.lastPrinted = value.lastPrinted;
172
+ this.created = value.created;
173
+ this.modified = value.modified;
174
+ this.company = value.company;
175
+ this.manager = value.manager;
176
+ this.title = value.title;
177
+ this.subject = value.subject;
178
+ this.keywords = value.keywords;
179
+ this.category = value.category;
180
+ this.description = value.description;
181
+ this.language = value.language;
182
+ this.revision = value.revision;
183
+ this.contentStatus = value.contentStatus;
184
+ this.properties = value.properties;
185
+ this.calcProperties = value.calcProperties;
186
+ this._worksheets = [];
187
+ value.worksheets.forEach(worksheetModel => {
188
+ const { id, name, state } = worksheetModel;
189
+ const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
190
+ const worksheet = (this._worksheets[id] = new Worksheet({
191
+ id,
192
+ name,
193
+ orderNo: orderNo !== -1 ? orderNo : undefined,
194
+ state,
195
+ workbook: this
196
+ }));
197
+ worksheet.model = worksheetModel;
198
+ });
199
+ this._definedNames.model = value.definedNames;
200
+ this.views = value.views;
201
+ this._themes = value.themes;
202
+ this.media = value.media || [];
203
+ // Handle pivot tables - either newly created or loaded from file
204
+ // Loaded pivot tables come from loadedPivotTables after reconciliation
205
+ this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
206
+ }
207
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Workbook Browser version - No Node.js dependencies
3
+ *
4
+ * Extends WorkbookBase with:
5
+ * - xlsx: Buffer-based operations (load, writeBuffer)
6
+ * - csv: Buffer-based operations (load, writeString, writeBuffer)
7
+ * - streaming: NOT supported (throws error)
8
+ */
9
+ import { WorkbookBase } from "./workbook.base.js";
10
+ import { XLSX } from "../xlsx/xlsx.browser.js";
11
+ import { CSV } from "../csv/csv.browser.js";
12
+ class Workbook extends WorkbookBase {
13
+ /**
14
+ * xlsx file format operations
15
+ * Supports: load (buffer), writeBuffer
16
+ * NOT supported: readFile, writeFile, read (stream), write (stream)
17
+ */
18
+ get xlsx() {
19
+ if (!this._xlsx) {
20
+ this._xlsx = new XLSX(this);
21
+ }
22
+ return this._xlsx;
23
+ }
24
+ /**
25
+ * CSV file format operations
26
+ * Supports: load (string/buffer), writeString, writeBuffer
27
+ * NOT supported: readFile, writeFile, read (stream), write (stream)
28
+ */
29
+ get csv() {
30
+ if (!this._csv) {
31
+ this._csv = new CSV(this);
32
+ }
33
+ return this._csv;
34
+ }
35
+ // ===========================================================================
36
+ // Static Factory Methods - NOT available in browser
37
+ // TypeScript users: These methods don't exist on this type
38
+ // JavaScript users: These methods throw helpful errors
39
+ // ===========================================================================
40
+ /**
41
+ * @deprecated Streaming is not available in browser
42
+ * @throws Error with helpful message
43
+ */
44
+ static createStreamWriter(_options) {
45
+ throw new Error("Streaming workbook writer is not available in browser. " +
46
+ "Use `new Workbook()` with `xlsx.writeBuffer()` instead, " +
47
+ "or import from 'excelts' (Node.js) for streaming support.");
48
+ }
49
+ /**
50
+ * @deprecated Streaming is not available in browser
51
+ * @throws Error with helpful message
52
+ */
53
+ static createStreamReader(_input, _options) {
54
+ throw new Error("Streaming workbook reader is not available in browser. " +
55
+ "Use `new Workbook()` with `xlsx.load()` instead, " +
56
+ "or import from 'excelts' (Node.js) for streaming support.");
57
+ }
58
+ }
59
+ export { Workbook };
@@ -1,33 +1,20 @@
1
- import { Worksheet } from "./worksheet.js";
2
- import { DefinedNames } from "./defined-names.js";
1
+ /**
2
+ * Workbook - Node.js version with full functionality
3
+ *
4
+ * Extends WorkbookBase with:
5
+ * - xlsx: Full file/stream/buffer support
6
+ * - csv: CSV read/write support
7
+ * - streaming: createStreamWriter/createStreamReader for large files
8
+ */
9
+ import { WorkbookBase } from "./workbook.base.js";
3
10
  import { XLSX } from "../xlsx/xlsx.js";
4
11
  import { CSV } from "../csv/csv.js";
5
- // Workbook requirements
6
- // Load and Save from file and stream
7
- // Access/Add/Delete individual worksheets
8
- // Manage String table, Hyperlink table, etc.
9
- // Manage scaffolding for contained objects to write to/read from
10
- class Workbook {
11
- constructor() {
12
- this.category = "";
13
- this.company = "";
14
- this.created = new Date();
15
- this.description = "";
16
- this.keywords = "";
17
- this.manager = "";
18
- this.modified = this.created;
19
- this.properties = {};
20
- this.calcProperties = {};
21
- this._worksheets = [];
22
- this.subject = "";
23
- this.title = "";
24
- this.views = [];
25
- this.media = [];
26
- this.pivotTables = [];
27
- this._definedNames = new DefinedNames();
28
- }
12
+ import { WorkbookWriter } from "../stream/xlsx/workbook-writer.js";
13
+ import { WorkbookReader } from "../stream/xlsx/workbook-reader.js";
14
+ class Workbook extends WorkbookBase {
29
15
  /**
30
16
  * xlsx file format operations
17
+ * Supports: readFile, writeFile, read (stream), write (stream), load (buffer), writeBuffer
31
18
  */
32
19
  get xlsx() {
33
20
  if (!this._xlsx) {
@@ -37,6 +24,7 @@ class Workbook {
37
24
  }
38
25
  /**
39
26
  * csv file format operations
27
+ * Supports: readFile, writeFile, read (stream), write (stream)
40
28
  */
41
29
  get csv() {
42
30
  if (!this._csv) {
@@ -44,161 +32,62 @@ class Workbook {
44
32
  }
45
33
  return this._csv;
46
34
  }
47
- get nextId() {
48
- // find the next unique spot to add worksheet
49
- for (let i = 1; i < this._worksheets.length; i++) {
50
- if (!this._worksheets[i]) {
51
- return i;
52
- }
53
- }
54
- return this._worksheets.length || 1;
55
- }
56
- /**
57
- * Add a new worksheet and return a reference to it
58
- */
59
- addWorksheet(name, options) {
60
- const id = this.nextId;
61
- const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
62
- const worksheetOptions = {
63
- ...options,
64
- id,
65
- name,
66
- orderNo: lastOrderNo + 1,
67
- workbook: this
68
- };
69
- const worksheet = new Worksheet(worksheetOptions);
70
- this._worksheets[id] = worksheet;
71
- return worksheet;
72
- }
73
- removeWorksheetEx(worksheet) {
74
- delete this._worksheets[worksheet.id];
75
- }
76
- removeWorksheet(id) {
77
- const worksheet = this.getWorksheet(id);
78
- if (worksheet) {
79
- worksheet.destroy();
80
- }
81
- }
82
- /**
83
- * Fetch sheet by name or id
84
- */
85
- getWorksheet(id) {
86
- if (id === undefined) {
87
- return this._worksheets.find(Boolean);
88
- }
89
- if (typeof id === "number") {
90
- return this._worksheets[id];
91
- }
92
- if (typeof id === "string") {
93
- return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
94
- }
95
- return undefined;
96
- }
35
+ // ===========================================================================
36
+ // Static Factory Methods for Streaming (Node.js only)
37
+ // ===========================================================================
97
38
  /**
98
- * Return a clone of worksheets in order
99
- */
100
- get worksheets() {
101
- // return a clone of _worksheets
102
- return this._worksheets
103
- .slice(1)
104
- .sort((a, b) => a.orderNo - b.orderNo)
105
- .filter(Boolean);
106
- }
107
- /**
108
- * Iterate over all sheets.
39
+ * Create a streaming workbook writer for large files.
40
+ * This is more memory-efficient than using Workbook for large datasets.
41
+ *
42
+ * @param options - Options for the workbook writer
43
+ * @returns A new WorkbookWriter instance
109
44
  *
110
- * Note: `workbook.worksheets.forEach` will still work but this is better.
45
+ * @example
46
+ * ```ts
47
+ * const writer = Workbook.createStreamWriter({ filename: "large-file.xlsx" });
48
+ * const sheet = writer.addWorksheet("Sheet1");
49
+ * for (let i = 0; i < 1000000; i++) {
50
+ * sheet.addRow([i, `Row ${i}`]).commit();
51
+ * }
52
+ * await writer.commit();
53
+ * ```
111
54
  */
112
- eachSheet(callback) {
113
- this.worksheets.forEach(sheet => {
114
- callback(sheet, sheet.id);
115
- });
116
- }
117
- get definedNames() {
118
- return this._definedNames;
119
- }
120
- clearThemes() {
121
- // Note: themes are not an exposed feature, meddle at your peril!
122
- this._themes = undefined;
55
+ static createStreamWriter(options) {
56
+ return new WorkbookWriter(options);
123
57
  }
124
58
  /**
125
- * Add Image to Workbook and return the id
59
+ * Create a streaming workbook reader for large files.
60
+ * This is more memory-efficient than using Workbook.xlsx.readFile for large datasets.
61
+ *
62
+ * @param input - File path or readable stream
63
+ * @param options - Options for the workbook reader
64
+ * @returns A new WorkbookReader instance
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const reader = Workbook.createStreamReader("large-file.xlsx");
69
+ * for await (const event of reader) {
70
+ * if (event.eventType === "worksheet") {
71
+ * const worksheet = event.value;
72
+ * for await (const row of worksheet) {
73
+ * console.log(row.values);
74
+ * }
75
+ * }
76
+ * }
77
+ * ```
126
78
  */
127
- addImage(image) {
128
- // TODO: validation?
129
- const id = this.media.length;
130
- this.media.push({ ...image, type: "image" });
131
- return id;
132
- }
133
- getImage(id) {
134
- return this.media[Number(id)];
135
- }
136
- get model() {
137
- return {
138
- creator: this.creator || "Unknown",
139
- lastModifiedBy: this.lastModifiedBy || "Unknown",
140
- lastPrinted: this.lastPrinted,
141
- created: this.created,
142
- modified: this.modified,
143
- properties: this.properties,
144
- worksheets: this.worksheets.map(worksheet => worksheet.model),
145
- sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
146
- definedNames: this._definedNames.model,
147
- views: this.views,
148
- company: this.company,
149
- manager: this.manager,
150
- title: this.title,
151
- subject: this.subject,
152
- keywords: this.keywords,
153
- category: this.category,
154
- description: this.description,
155
- language: this.language,
156
- revision: this.revision,
157
- contentStatus: this.contentStatus,
158
- themes: this._themes,
159
- media: this.media,
160
- pivotTables: this.pivotTables,
161
- calcProperties: this.calcProperties
162
- };
163
- }
164
- set model(value) {
165
- this.creator = value.creator;
166
- this.lastModifiedBy = value.lastModifiedBy;
167
- this.lastPrinted = value.lastPrinted;
168
- this.created = value.created;
169
- this.modified = value.modified;
170
- this.company = value.company;
171
- this.manager = value.manager;
172
- this.title = value.title;
173
- this.subject = value.subject;
174
- this.keywords = value.keywords;
175
- this.category = value.category;
176
- this.description = value.description;
177
- this.language = value.language;
178
- this.revision = value.revision;
179
- this.contentStatus = value.contentStatus;
180
- this.properties = value.properties;
181
- this.calcProperties = value.calcProperties;
182
- this._worksheets = [];
183
- value.worksheets.forEach(worksheetModel => {
184
- const { id, name, state } = worksheetModel;
185
- const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
186
- const worksheet = (this._worksheets[id] = new Worksheet({
187
- id,
188
- name,
189
- orderNo: orderNo !== -1 ? orderNo : undefined,
190
- state,
191
- workbook: this
192
- }));
193
- worksheet.model = worksheetModel;
194
- });
195
- this._definedNames.model = value.definedNames;
196
- this.views = value.views;
197
- this._themes = value.themes;
198
- this.media = value.media || [];
199
- // Handle pivot tables - either newly created or loaded from file
200
- // Loaded pivot tables come from loadedPivotTables after reconciliation
201
- this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
79
+ static createStreamReader(input, options) {
80
+ return new WorkbookReader(input, options);
202
81
  }
203
82
  }
83
+ /**
84
+ * Streaming workbook writer class for large files.
85
+ * @example new Workbook.Writer({ filename: "large.xlsx" })
86
+ */
87
+ Workbook.Writer = WorkbookWriter;
88
+ /**
89
+ * Streaming workbook reader class for large files.
90
+ * @example new Workbook.Reader("large.xlsx")
91
+ */
92
+ Workbook.Reader = WorkbookReader;
204
93
  export { Workbook };
@@ -36,6 +36,7 @@ class Worksheet {
36
36
  this._merges = {};
37
37
  // record of all row and column pageBreaks
38
38
  this.rowBreaks = [];
39
+ this.colBreaks = [];
39
40
  // for tabColor, default row height, outline levels, etc
40
41
  this.properties = Object.assign({}, {
41
42
  defaultRowHeight: 15,
@@ -850,6 +851,7 @@ class Worksheet {
850
851
  pageSetup: this.pageSetup,
851
852
  headerFooter: this.headerFooter,
852
853
  rowBreaks: this.rowBreaks,
854
+ colBreaks: this.colBreaks,
853
855
  views: this.views,
854
856
  autoFilter: this.autoFilter,
855
857
  media: this._media.map(medium => medium.model),
@@ -908,6 +910,8 @@ class Worksheet {
908
910
  this.properties = value.properties;
909
911
  this.pageSetup = value.pageSetup;
910
912
  this.headerFooter = value.headerFooter;
913
+ this.rowBreaks = value.rowBreaks || [];
914
+ this.colBreaks = value.colBreaks || [];
911
915
  this.views = value.views;
912
916
  this.autoFilter = value.autoFilter;
913
917
  this._media = value.media.map(medium => new Image(this, medium));
@@ -1,4 +1,36 @@
1
- export { Workbook } from "./doc/workbook.js";
1
+ /**
2
+ * Browser entry point - No Node.js dependencies
3
+ * This version is optimized for browser environments with minimal bundle size
4
+ */
5
+ // =============================================================================
6
+ // Main Classes (Browser-compatible)
7
+ // =============================================================================
8
+ export { Workbook } from "./doc/workbook.browser.js";
9
+ export { Worksheet } from "./doc/worksheet.js";
10
+ export { Row } from "./doc/row.js";
11
+ export { Column } from "./doc/column.js";
12
+ export { Cell } from "./doc/cell.js";
13
+ export { Range } from "./doc/range.js";
14
+ export { Image } from "./doc/image.js";
15
+ export * from "./doc/anchor.js";
16
+ export { Table } from "./doc/table.js";
17
+ export { DataValidations } from "./doc/data-validations.js";
18
+ // =============================================================================
19
+ // Enums
20
+ // =============================================================================
2
21
  export * from "./doc/enums.js";
22
+ // =============================================================================
23
+ // Types
24
+ // =============================================================================
25
+ // Export all type definitions from types.ts
3
26
  export * from "./types.js";
27
+ // =============================================================================
28
+ // Utilities
29
+ // =============================================================================
4
30
  export * from "./utils/sheet-utils.js";
31
+ // =============================================================================
32
+ // NOTE: The following are NOT exported in browser build (Node.js only):
33
+ // - WorkbookWriter, WorkbookReader (streaming classes for file I/O)
34
+ // - WorksheetWriter, WorksheetReader (streaming classes)
35
+ // - ModelContainer
36
+ // =============================================================================
package/dist/esm/index.js CHANGED
@@ -1,11 +1,8 @@
1
- // Export main classes
1
+ // =============================================================================
2
+ // Main Classes
3
+ // =============================================================================
2
4
  export { Workbook } from "./doc/workbook.js";
3
- export { ModelContainer } from "./doc/modelcontainer.js";
4
- export { WorkbookWriter } from "./stream/xlsx/workbook-writer.js";
5
- export { WorkbookReader } from "./stream/xlsx/workbook-reader.js";
6
5
  export { Worksheet } from "./doc/worksheet.js";
7
- export { WorksheetReader } from "./stream/xlsx/worksheet-reader.js";
8
- export { WorksheetWriter } from "./stream/xlsx/worksheet-writer.js";
9
6
  export { Row } from "./doc/row.js";
10
7
  export { Column } from "./doc/column.js";
11
8
  export { Cell } from "./doc/cell.js";
@@ -14,8 +11,26 @@ export { Image } from "./doc/image.js";
14
11
  export * from "./doc/anchor.js";
15
12
  export { Table } from "./doc/table.js";
16
13
  export { DataValidations } from "./doc/data-validations.js";
17
- // Export enums
14
+ // =============================================================================
15
+ // Node.js Only: Streaming Classes
16
+ // These can also be accessed via Workbook.createStreamWriter/createStreamReader
17
+ // =============================================================================
18
+ export { WorkbookWriter } from "./stream/xlsx/workbook-writer.js";
19
+ export { WorkbookReader } from "./stream/xlsx/workbook-reader.js";
20
+ export { WorksheetWriter } from "./stream/xlsx/worksheet-writer.js";
21
+ export { WorksheetReader } from "./stream/xlsx/worksheet-reader.js";
22
+ export { ModelContainer } from "./doc/modelcontainer.js";
23
+ // =============================================================================
24
+ // Enums
25
+ // =============================================================================
18
26
  export * from "./doc/enums.js";
19
- // Export all type definitions
27
+ // =============================================================================
28
+ // Types
29
+ // =============================================================================
30
+ // Export all type definitions from types.ts
20
31
  export * from "./types.js";
32
+ export { CsvParserStream, CsvFormatterStream } from "./csv/csv.js";
33
+ // =============================================================================
34
+ // Utilities
35
+ // =============================================================================
21
36
  export * from "./utils/sheet-utils.js";
package/dist/esm/local.js CHANGED
@@ -1,2 +1 @@
1
1
  console.log(123);
2
- export {};
@@ -1,5 +1,5 @@
1
1
  import fs from "fs";
2
- import { Zip, ZipDeflate } from "fflate";
2
+ import { Zip, ZipDeflate } from "../../utils/zip/streaming-zip.js";
3
3
  import { StreamBuf } from "../../utils/stream-buf.js";
4
4
  import { RelType } from "../../xlsx/rel-type.js";
5
5
  import { StylesXform } from "../../xlsx/xform/style/styles-xform.js";