@cj-tech-master/excelts 1.6.2-canary.20251224015244.0b06ae9 → 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 (376) hide show
  1. package/README.md +31 -18
  2. package/README_zh.md +31 -19
  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 +22 -22
  35. package/dist/cjs/stream/xlsx/workbook-writer.js +34 -34
  36. package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
  37. package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -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/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/utils/browser-buffer.js +67 -0
  197. package/dist/esm/utils/encryptor.browser.js +237 -0
  198. package/dist/esm/utils/stream-buf.browser.js +352 -0
  199. package/dist/esm/utils/utils.base.js +142 -0
  200. package/dist/esm/utils/utils.browser.js +68 -0
  201. package/dist/esm/utils/utils.js +15 -123
  202. package/dist/esm/utils/zip/compress.base.js +80 -0
  203. package/dist/esm/utils/zip/compress.browser.js +76 -0
  204. package/dist/esm/utils/zip/compress.js +16 -164
  205. package/dist/esm/utils/zip/crc32.browser.js +82 -0
  206. package/dist/esm/utils/zip-stream.browser.js +132 -0
  207. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
  208. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
  209. package/dist/esm/xlsx/xlsx.base.js +739 -0
  210. package/dist/esm/xlsx/xlsx.browser.js +202 -0
  211. package/dist/esm/xlsx/xlsx.js +87 -829
  212. package/dist/types/csv/csv-core.d.ts +207 -0
  213. package/dist/types/csv/csv-stream.d.ts +114 -0
  214. package/dist/types/csv/csv.base.d.ts +61 -0
  215. package/dist/types/csv/csv.browser.d.ts +33 -0
  216. package/dist/types/csv/csv.d.ts +97 -71
  217. package/dist/types/doc/anchor.d.ts +1 -1
  218. package/dist/types/doc/cell.d.ts +7 -7
  219. package/dist/types/doc/column.d.ts +3 -3
  220. package/dist/types/doc/defined-names.d.ts +4 -4
  221. package/dist/types/doc/image.d.ts +2 -2
  222. package/dist/types/doc/modelcontainer.d.ts +1 -1
  223. package/dist/types/doc/pivot-table.d.ts +1 -1
  224. package/dist/types/doc/range.d.ts +1 -1
  225. package/dist/types/doc/row.d.ts +3 -3
  226. package/dist/types/doc/table.d.ts +2 -2
  227. package/dist/types/doc/workbook.base.d.ts +111 -0
  228. package/dist/types/doc/workbook.browser.d.ts +38 -0
  229. package/dist/types/doc/workbook.d.ts +62 -92
  230. package/dist/types/doc/worksheet.d.ts +10 -10
  231. package/dist/types/index.browser.d.ts +19 -5
  232. package/dist/types/index.d.ts +24 -23
  233. package/dist/types/local.d.ts +0 -1
  234. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
  235. package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
  236. package/dist/types/stream/xlsx/workbook-writer.d.ts +6 -6
  237. package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
  238. package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
  239. package/dist/types/utils/browser-buffer.d.ts +28 -0
  240. package/dist/types/utils/col-cache.d.ts +1 -1
  241. package/dist/types/utils/encryptor.browser.d.ts +28 -0
  242. package/dist/types/utils/sheet-utils.d.ts +3 -3
  243. package/dist/types/utils/stream-buf.browser.d.ts +41 -0
  244. package/dist/types/utils/unzip/extract.d.ts +6 -6
  245. package/dist/types/utils/unzip/index.d.ts +8 -8
  246. package/dist/types/utils/unzip/parse.d.ts +3 -3
  247. package/dist/types/utils/utils.base.d.ts +29 -0
  248. package/dist/types/utils/utils.browser.d.ts +29 -0
  249. package/dist/types/utils/utils.d.ts +6 -25
  250. package/dist/types/utils/zip/compress.base.d.ts +42 -0
  251. package/dist/types/utils/zip/compress.browser.d.ts +54 -0
  252. package/dist/types/utils/zip/compress.d.ts +13 -45
  253. package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
  254. package/dist/types/utils/zip/index.d.ts +5 -5
  255. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  256. package/dist/types/utils/zip-stream.browser.d.ts +39 -0
  257. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  258. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  259. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  260. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  261. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  262. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  263. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  264. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  265. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  266. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  267. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  268. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  269. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  270. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  271. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  272. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  273. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  274. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  275. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  276. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  277. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  278. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  279. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  280. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  284. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  288. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  289. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  290. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  294. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  299. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  300. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  302. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  304. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  305. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  306. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  307. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  308. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  309. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  310. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  311. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  312. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  313. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  314. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  315. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  316. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  317. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  318. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  320. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  321. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  322. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  323. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  324. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  325. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  326. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  327. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  328. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  329. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  330. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
  331. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  332. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  333. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  334. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  335. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  336. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
  337. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  338. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  339. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  340. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  341. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  342. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  343. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  344. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  345. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  346. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  347. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  348. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  349. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  350. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  351. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  352. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  353. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  354. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  355. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  356. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  357. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  358. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  359. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  360. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  361. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  362. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  363. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  364. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  365. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  366. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  367. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  368. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  369. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  370. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  371. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  372. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  373. package/dist/types/xlsx/xlsx.base.d.ts +134 -0
  374. package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
  375. package/dist/types/xlsx/xlsx.d.ts +20 -80
  376. 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 {};
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Browser-compatible Buffer utilities
3
+ * Provides base64 encoding/decoding and a Buffer-like wrapper for Uint8Array
4
+ */
5
+ /**
6
+ * Convert Uint8Array to base64 string
7
+ */
8
+ export function uint8ArrayToBase64(bytes) {
9
+ let binary = "";
10
+ for (let i = 0; i < bytes.length; i++) {
11
+ binary += String.fromCharCode(bytes[i]);
12
+ }
13
+ return btoa(binary);
14
+ }
15
+ /**
16
+ * Convert base64 string to Uint8Array
17
+ */
18
+ export function base64ToUint8Array(base64) {
19
+ const binaryString = atob(base64);
20
+ const bytes = new Uint8Array(binaryString.length);
21
+ for (let i = 0; i < binaryString.length; i++) {
22
+ bytes[i] = binaryString.charCodeAt(i);
23
+ }
24
+ return bytes;
25
+ }
26
+ /**
27
+ * Buffer-like wrapper for Uint8Array with toString("base64") support
28
+ * This provides Node.js Buffer-like API for browser environments
29
+ */
30
+ export class BrowserBuffer extends Uint8Array {
31
+ toString(encoding) {
32
+ if (encoding === "base64") {
33
+ return uint8ArrayToBase64(this);
34
+ }
35
+ return new TextDecoder().decode(this);
36
+ }
37
+ static from(data) {
38
+ const buffer = new BrowserBuffer(data.length);
39
+ buffer.set(data);
40
+ return buffer;
41
+ }
42
+ }
43
+ /**
44
+ * Convert string to UTF-16LE Uint8Array (used for Excel password hashing)
45
+ */
46
+ export function stringToUtf16Le(str) {
47
+ const bytes = new Uint8Array(str.length * 2);
48
+ for (let i = 0; i < str.length; i++) {
49
+ const code = str.charCodeAt(i);
50
+ bytes[i * 2] = code & 0xff;
51
+ bytes[i * 2 + 1] = (code >> 8) & 0xff;
52
+ }
53
+ return bytes;
54
+ }
55
+ /**
56
+ * Concatenate multiple Uint8Arrays into one
57
+ */
58
+ export function concatUint8Arrays(...arrays) {
59
+ const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);
60
+ const result = new Uint8Array(totalLength);
61
+ let offset = 0;
62
+ for (const arr of arrays) {
63
+ result.set(arr, offset);
64
+ offset += arr.length;
65
+ }
66
+ return result;
67
+ }