@cj-tech-master/excelts 1.6.2 → 1.6.3-canary.20251224124621.73c5d94

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 (382) hide show
  1. package/README.md +36 -4
  2. package/README_zh.md +37 -6
  3. package/dist/browser/excelts.esm.js +19115 -0
  4. package/dist/browser/excelts.esm.js.map +1 -0
  5. package/dist/browser/excelts.esm.min.js +127 -0
  6. package/dist/browser/excelts.iife.js +13576 -46968
  7. package/dist/browser/excelts.iife.js.map +1 -1
  8. package/dist/browser/excelts.iife.min.js +25 -105
  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 +154 -0
  12. package/dist/cjs/csv/csv.browser.js +68 -0
  13. package/dist/cjs/csv/csv.js +226 -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 +7 -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 +41 -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 +29 -26
  35. package/dist/cjs/stream/xlsx/workbook-writer.js +71 -57
  36. package/dist/cjs/stream/xlsx/worksheet-reader.js +27 -23
  37. package/dist/cjs/stream/xlsx/worksheet-writer.js +72 -66
  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/encryptor.browser.js +240 -0
  42. package/dist/cjs/utils/parse-sax.js +2 -2
  43. package/dist/cjs/utils/shared-formula.js +5 -5
  44. package/dist/cjs/utils/sheet-utils.js +13 -13
  45. package/dist/cjs/utils/stream-buf.browser.js +355 -0
  46. package/dist/cjs/utils/stream-buf.js +5 -5
  47. package/dist/cjs/utils/unzip/extract.js +11 -11
  48. package/dist/cjs/utils/unzip/index.js +21 -21
  49. package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
  50. package/dist/cjs/utils/unzip/parse.js +16 -16
  51. package/dist/cjs/utils/unzip/zip-parser.js +3 -3
  52. package/dist/cjs/utils/utils.base.js +161 -0
  53. package/dist/cjs/utils/utils.browser.js +89 -0
  54. package/dist/cjs/utils/utils.js +46 -154
  55. package/dist/cjs/utils/xml-stream.js +3 -3
  56. package/dist/cjs/utils/zip/compress.base.js +85 -0
  57. package/dist/cjs/utils/zip/compress.browser.js +83 -0
  58. package/dist/cjs/utils/zip/compress.js +18 -198
  59. package/dist/cjs/utils/zip/crc32.browser.js +88 -0
  60. package/dist/cjs/utils/zip/index.js +17 -17
  61. package/dist/cjs/utils/zip/zip-builder.js +10 -10
  62. package/dist/cjs/utils/zip-stream.browser.js +135 -0
  63. package/dist/cjs/utils/zip-stream.js +4 -4
  64. package/dist/cjs/xlsx/xform/base-xform.js +4 -4
  65. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
  66. package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
  67. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
  68. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
  69. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
  70. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
  71. package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
  72. package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
  73. package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
  74. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
  75. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
  76. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
  77. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
  78. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
  79. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
  80. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
  81. package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
  82. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
  83. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
  84. package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
  85. package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
  86. package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
  87. package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
  88. package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
  89. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
  90. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
  91. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
  92. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
  93. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
  94. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
  95. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
  96. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
  97. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
  98. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
  99. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
  100. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
  101. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
  102. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
  103. package/dist/cjs/xlsx/xform/list-xform.js +2 -2
  104. package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
  105. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
  106. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
  107. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
  108. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
  109. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
  110. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
  111. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
  112. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
  113. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
  114. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
  115. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
  116. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
  117. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
  118. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
  119. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
  120. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
  121. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
  122. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
  123. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
  124. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
  125. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
  126. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
  127. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
  128. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
  129. package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
  130. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
  131. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
  132. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
  133. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
  134. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
  135. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
  136. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
  137. package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
  138. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
  139. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
  140. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
  141. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
  142. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
  143. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
  144. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
  145. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
  146. package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
  147. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
  148. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
  149. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
  150. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
  151. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
  152. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
  153. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
  154. package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
  155. package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
  156. package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
  157. package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
  158. package/dist/cjs/xlsx/xform/static-xform.js +4 -4
  159. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
  160. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
  161. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
  162. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
  163. package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
  164. package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
  165. package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
  166. package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
  167. package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
  168. package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
  169. package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
  170. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
  171. package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
  172. package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
  173. package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
  174. package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
  175. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
  176. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
  177. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
  178. package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
  179. package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
  180. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
  181. package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
  182. package/dist/cjs/xlsx/xlsx.base.js +742 -0
  183. package/dist/cjs/xlsx/xlsx.browser.js +205 -0
  184. package/dist/cjs/xlsx/xlsx.js +91 -833
  185. package/dist/esm/csv/csv-core.js +694 -0
  186. package/dist/esm/csv/csv-stream.js +638 -0
  187. package/dist/esm/csv/csv.base.js +141 -0
  188. package/dist/esm/csv/csv.browser.js +65 -0
  189. package/dist/esm/csv/csv.js +189 -159
  190. package/dist/esm/doc/workbook.base.js +207 -0
  191. package/dist/esm/doc/workbook.browser.js +59 -0
  192. package/dist/esm/doc/workbook.js +64 -175
  193. package/dist/esm/index.browser.js +33 -1
  194. package/dist/esm/index.js +23 -8
  195. package/dist/esm/local.js +0 -1
  196. package/dist/esm/stream/xlsx/hyperlink-reader.js +1 -1
  197. package/dist/esm/stream/xlsx/workbook-reader.js +7 -4
  198. package/dist/esm/stream/xlsx/workbook-writer.js +37 -23
  199. package/dist/esm/stream/xlsx/worksheet-reader.js +12 -8
  200. package/dist/esm/stream/xlsx/worksheet-writer.js +12 -6
  201. package/dist/esm/utils/browser-buffer.js +67 -0
  202. package/dist/esm/utils/encryptor.browser.js +237 -0
  203. package/dist/esm/utils/stream-buf.browser.js +352 -0
  204. package/dist/esm/utils/utils.base.js +142 -0
  205. package/dist/esm/utils/utils.browser.js +68 -0
  206. package/dist/esm/utils/utils.js +15 -123
  207. package/dist/esm/utils/zip/compress.base.js +80 -0
  208. package/dist/esm/utils/zip/compress.browser.js +76 -0
  209. package/dist/esm/utils/zip/compress.js +16 -164
  210. package/dist/esm/utils/zip/crc32.browser.js +82 -0
  211. package/dist/esm/utils/zip-stream.browser.js +132 -0
  212. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
  213. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
  214. package/dist/esm/xlsx/xlsx.base.js +739 -0
  215. package/dist/esm/xlsx/xlsx.browser.js +202 -0
  216. package/dist/esm/xlsx/xlsx.js +87 -829
  217. package/dist/types/csv/csv-core.d.ts +207 -0
  218. package/dist/types/csv/csv-stream.d.ts +114 -0
  219. package/dist/types/csv/csv.base.d.ts +61 -0
  220. package/dist/types/csv/csv.browser.d.ts +33 -0
  221. package/dist/types/csv/csv.d.ts +97 -71
  222. package/dist/types/doc/anchor.d.ts +1 -1
  223. package/dist/types/doc/cell.d.ts +7 -7
  224. package/dist/types/doc/column.d.ts +3 -3
  225. package/dist/types/doc/defined-names.d.ts +4 -4
  226. package/dist/types/doc/image.d.ts +2 -2
  227. package/dist/types/doc/modelcontainer.d.ts +1 -1
  228. package/dist/types/doc/pivot-table.d.ts +1 -1
  229. package/dist/types/doc/range.d.ts +1 -1
  230. package/dist/types/doc/row.d.ts +3 -3
  231. package/dist/types/doc/table.d.ts +4 -4
  232. package/dist/types/doc/workbook.base.d.ts +111 -0
  233. package/dist/types/doc/workbook.browser.d.ts +38 -0
  234. package/dist/types/doc/workbook.d.ts +62 -92
  235. package/dist/types/doc/worksheet.d.ts +10 -10
  236. package/dist/types/index.browser.d.ts +19 -5
  237. package/dist/types/index.d.ts +24 -20
  238. package/dist/types/local.d.ts +0 -1
  239. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +11 -11
  240. package/dist/types/stream/xlsx/workbook-reader.d.ts +125 -36
  241. package/dist/types/stream/xlsx/workbook-writer.d.ts +105 -22
  242. package/dist/types/stream/xlsx/worksheet-reader.d.ts +40 -22
  243. package/dist/types/stream/xlsx/worksheet-writer.d.ts +83 -49
  244. package/dist/types/types.d.ts +4 -16
  245. package/dist/types/utils/browser-buffer.d.ts +28 -0
  246. package/dist/types/utils/col-cache.d.ts +1 -1
  247. package/dist/types/utils/encryptor.browser.d.ts +28 -0
  248. package/dist/types/utils/sheet-utils.d.ts +3 -3
  249. package/dist/types/utils/stream-buf.browser.d.ts +41 -0
  250. package/dist/types/utils/unzip/extract.d.ts +6 -6
  251. package/dist/types/utils/unzip/index.d.ts +8 -8
  252. package/dist/types/utils/unzip/parse.d.ts +3 -3
  253. package/dist/types/utils/utils.base.d.ts +29 -0
  254. package/dist/types/utils/utils.browser.d.ts +29 -0
  255. package/dist/types/utils/utils.d.ts +6 -25
  256. package/dist/types/utils/zip/compress.base.d.ts +42 -0
  257. package/dist/types/utils/zip/compress.browser.d.ts +54 -0
  258. package/dist/types/utils/zip/compress.d.ts +13 -45
  259. package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
  260. package/dist/types/utils/zip/index.d.ts +5 -5
  261. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  262. package/dist/types/utils/zip-stream.browser.d.ts +39 -0
  263. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  264. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  265. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  266. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  267. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  268. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  269. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  270. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  271. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  272. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  273. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  274. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  275. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  276. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  277. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  278. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  279. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  280. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  284. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  288. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  289. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  290. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  294. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  299. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  300. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  302. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  304. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  305. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  306. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  307. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  308. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  309. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  310. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  311. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  312. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  313. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  314. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  315. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  316. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  317. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  318. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  320. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  321. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  322. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  323. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  324. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  325. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  326. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  327. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  328. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  329. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  330. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  331. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  332. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  333. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  334. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  335. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  336. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
  337. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  338. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  339. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  340. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  341. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  342. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
  343. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  344. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  345. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  346. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  347. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  348. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  349. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  350. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  351. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  352. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  353. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  354. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  355. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  356. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  357. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  358. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  359. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  360. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  361. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  362. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  363. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  364. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  365. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  366. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  367. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  368. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  369. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  370. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  371. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  372. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  373. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  374. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  375. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  376. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  377. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  378. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  379. package/dist/types/xlsx/xlsx.base.d.ts +134 -0
  380. package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
  381. package/dist/types/xlsx/xlsx.d.ts +20 -80
  382. package/package.json +13 -15
@@ -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 };
@@ -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 {};
@@ -49,7 +49,7 @@ class HyperlinkReader extends EventEmitter {
49
49
  case RelType.Hyperlink:
50
50
  {
51
51
  const relationship = {
52
- type: Enums.RelationshipType.Styles,
52
+ type: Enums.RelationshipType.Hyperlink,
53
53
  rId,
54
54
  target: node.attributes.Target,
55
55
  targetMode: node.attributes.TargetMode
@@ -67,6 +67,9 @@ class WorkbookReader extends EventEmitter {
67
67
  }
68
68
  async *parse(input, options) {
69
69
  if (options) {
70
+ // Note: This replaces all options, not merging with constructor defaults.
71
+ // This is intentional for backwards compatibility - passing partial options
72
+ // to parse() will leave unspecified options as undefined.
70
73
  this.options = options;
71
74
  }
72
75
  const stream = (this.stream = this._getStream(input || this.input));
@@ -310,13 +313,13 @@ class WorkbookReader extends EventEmitter {
310
313
  const worksheetReader = new WorksheetReader({
311
314
  workbook: this,
312
315
  id: parseInt(sheetNo, 10),
313
- iterator,
316
+ iterator: iterator,
314
317
  options: this.options
315
318
  });
316
- const matchingRel = (this.workbookRels || []).find((rel) => rel.Target === `worksheets/sheet${sheetNo}.xml`);
319
+ const matchingRel = (this.workbookRels || []).find(rel => rel.Target === `worksheets/sheet${sheetNo}.xml`);
317
320
  const matchingSheet = matchingRel &&
318
321
  this.model &&
319
- (this.model.sheets || []).find((sheet) => sheet.rId === matchingRel.Id);
322
+ (this.model.sheets || []).find(sheet => sheet.rId === matchingRel.Id);
320
323
  if (matchingSheet) {
321
324
  worksheetReader.id = matchingSheet.id;
322
325
  worksheetReader.name = matchingSheet.name;
@@ -331,7 +334,7 @@ class WorkbookReader extends EventEmitter {
331
334
  const hyperlinksReader = new HyperlinkReader({
332
335
  workbook: this,
333
336
  id: parseInt(sheetNo, 10),
334
- iterator,
337
+ iterator: iterator,
335
338
  options: this.options
336
339
  });
337
340
  if (this.options.hyperlinks === "emit") {