@alienkarma/exceljs 4.4.0-fork.12 → 4.4.0-fork.13

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 (536) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +3024 -3024
  3. package/README_zh.md +2878 -2878
  4. package/excel.js +13 -13
  5. package/index.d.ts +2040 -2040
  6. package/lib/csv/csv.js +191 -191
  7. package/lib/csv/line-buffer.js +74 -74
  8. package/lib/csv/stream-converter.js +135 -135
  9. package/lib/doc/anchor.js +91 -91
  10. package/lib/doc/cell.js +1124 -1124
  11. package/lib/doc/column.js +320 -320
  12. package/lib/doc/data/theme1.json +234 -234
  13. package/lib/doc/data-validations.js +19 -19
  14. package/lib/doc/defined-names.js +196 -196
  15. package/lib/doc/enums.js +48 -48
  16. package/lib/doc/image.js +59 -59
  17. package/lib/doc/modelcontainer.js +18 -18
  18. package/lib/doc/note.js +65 -65
  19. package/lib/doc/pivot-table.js +132 -132
  20. package/lib/doc/range.js +257 -257
  21. package/lib/doc/row.js +415 -415
  22. package/lib/doc/table.js +465 -465
  23. package/lib/doc/workbook.js +224 -224
  24. package/lib/doc/worksheet.js +949 -949
  25. package/lib/exceljs.bare.js +13 -13
  26. package/lib/exceljs.browser.js +36 -36
  27. package/lib/exceljs.nodejs.js +14 -14
  28. package/lib/stream/xlsx/hyperlink-reader.js +83 -83
  29. package/lib/stream/xlsx/sheet-comments-writer.js +121 -121
  30. package/lib/stream/xlsx/sheet-rels-writer.js +119 -119
  31. package/lib/stream/xlsx/workbook-reader.js +337 -337
  32. package/lib/stream/xlsx/workbook-writer.js +372 -366
  33. package/lib/stream/xlsx/worksheet-reader.js +374 -374
  34. package/lib/stream/xlsx/worksheet-writer.js +717 -717
  35. package/lib/utils/auto-drain.js +15 -15
  36. package/lib/utils/browser-buffer-decode.js +14 -14
  37. package/lib/utils/browser-buffer-encode.js +15 -15
  38. package/lib/utils/cell-matrix.js +165 -165
  39. package/lib/utils/col-cache.js +287 -287
  40. package/lib/utils/copy-style.js +43 -43
  41. package/lib/utils/encryptor.js +55 -55
  42. package/lib/utils/iterate-stream.js +48 -48
  43. package/lib/utils/parse-sax.js +30 -30
  44. package/lib/utils/shared-formula.js +44 -44
  45. package/lib/utils/shared-strings.js +35 -35
  46. package/lib/utils/stream-base64.js +72 -72
  47. package/lib/utils/stream-buf.js +364 -364
  48. package/lib/utils/string-buf.js +82 -82
  49. package/lib/utils/string-builder.js +35 -35
  50. package/lib/utils/stuttered-pipe.js +67 -67
  51. package/lib/utils/typed-stack.js +24 -24
  52. package/lib/utils/under-dash.js +184 -184
  53. package/lib/utils/utils.js +205 -205
  54. package/lib/utils/xml-stream.js +169 -169
  55. package/lib/utils/zip-stream.js +87 -87
  56. package/lib/xlsx/.rels +10 -10
  57. package/lib/xlsx/calcChain.xml +5 -5
  58. package/lib/xlsx/core.xml +6 -6
  59. package/lib/xlsx/defaultnumformats.js +153 -153
  60. package/lib/xlsx/rel-type.js +20 -20
  61. package/lib/xlsx/styles.xml +40 -40
  62. package/lib/xlsx/workbook.xml +16 -16
  63. package/lib/xlsx/xform/base-xform.js +145 -145
  64. package/lib/xlsx/xform/book/defined-name-xform.js +91 -91
  65. package/lib/xlsx/xform/book/sheet-xform.js +34 -34
  66. package/lib/xlsx/xform/book/workbook-calc-properties-xform.js +26 -26
  67. package/lib/xlsx/xform/book/workbook-pivot-cache-xform.js +29 -29
  68. package/lib/xlsx/xform/book/workbook-properties-xform.js +29 -29
  69. package/lib/xlsx/xform/book/workbook-view-xform.js +53 -53
  70. package/lib/xlsx/xform/book/workbook-xform.js +259 -259
  71. package/lib/xlsx/xform/comment/comment-xform.js +105 -105
  72. package/lib/xlsx/xform/comment/comments-xform.js +82 -82
  73. package/lib/xlsx/xform/comment/style/vml-position-xform.js +39 -39
  74. package/lib/xlsx/xform/comment/style/vml-protection-xform.js +36 -36
  75. package/lib/xlsx/xform/comment/vml-anchor-xform.js +60 -60
  76. package/lib/xlsx/xform/comment/vml-client-data-xform.js +95 -95
  77. package/lib/xlsx/xform/comment/vml-notes-xform.js +107 -107
  78. package/lib/xlsx/xform/comment/vml-shape-xform.js +95 -95
  79. package/lib/xlsx/xform/comment/vml-textbox-xform.js +64 -64
  80. package/lib/xlsx/xform/composite-xform.js +56 -56
  81. package/lib/xlsx/xform/core/app-heading-pairs-xform.js +32 -32
  82. package/lib/xlsx/xform/core/app-titles-of-parts-xform.js +28 -28
  83. package/lib/xlsx/xform/core/app-xform.js +100 -100
  84. package/lib/xlsx/xform/core/content-types-xform.js +135 -135
  85. package/lib/xlsx/xform/core/core-xform.js +136 -136
  86. package/lib/xlsx/xform/core/relationship-xform.js +25 -25
  87. package/lib/xlsx/xform/core/relationships-xform.js +73 -73
  88. package/lib/xlsx/xform/drawing/base-cell-anchor-xform.js +48 -48
  89. package/lib/xlsx/xform/drawing/blip-fill-xform.js +71 -71
  90. package/lib/xlsx/xform/drawing/blip-xform.js +42 -42
  91. package/lib/xlsx/xform/drawing/c-nv-pic-pr-xform.js +38 -38
  92. package/lib/xlsx/xform/drawing/c-nv-pr-xform.js +68 -68
  93. package/lib/xlsx/xform/drawing/cell-position-xform.js +77 -77
  94. package/lib/xlsx/xform/drawing/drawing-xform.js +109 -109
  95. package/lib/xlsx/xform/drawing/ext-lst-xform.js +43 -43
  96. package/lib/xlsx/xform/drawing/ext-xform.js +44 -44
  97. package/lib/xlsx/xform/drawing/hlink-click-xform.js +41 -41
  98. package/lib/xlsx/xform/drawing/nv-pic-pr-xform.js +65 -65
  99. package/lib/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -63
  100. package/lib/xlsx/xform/drawing/pic-xform.js +77 -77
  101. package/lib/xlsx/xform/drawing/sp-pr.js +17 -17
  102. package/lib/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -62
  103. package/lib/xlsx/xform/list-xform.js +95 -95
  104. package/lib/xlsx/xform/pivot-table/cache-field.js +43 -43
  105. package/lib/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +77 -77
  106. package/lib/xlsx/xform/pivot-table/pivot-cache-records-xform.js +103 -103
  107. package/lib/xlsx/xform/pivot-table/pivot-table-xform.js +189 -189
  108. package/lib/xlsx/xform/sheet/auto-filter-xform.js +38 -38
  109. package/lib/xlsx/xform/sheet/cell-xform.js +498 -498
  110. package/lib/xlsx/xform/sheet/cf/cf-rule-xform.js +301 -301
  111. package/lib/xlsx/xform/sheet/cf/cfvo-xform.js +27 -27
  112. package/lib/xlsx/xform/sheet/cf/color-scale-xform.js +45 -45
  113. package/lib/xlsx/xform/sheet/cf/conditional-formatting-xform.js +48 -48
  114. package/lib/xlsx/xform/sheet/cf/conditional-formattings-xform.js +92 -92
  115. package/lib/xlsx/xform/sheet/cf/databar-xform.js +49 -49
  116. package/lib/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +87 -87
  117. package/lib/xlsx/xform/sheet/cf/formula-xform.js +25 -25
  118. package/lib/xlsx/xform/sheet/cf/icon-set-xform.js +47 -47
  119. package/lib/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +27 -27
  120. package/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +98 -98
  121. package/lib/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +43 -43
  122. package/lib/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +62 -62
  123. package/lib/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +50 -50
  124. package/lib/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +98 -98
  125. package/lib/xlsx/xform/sheet/cf-ext/f-ext-xform.js +25 -25
  126. package/lib/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +73 -73
  127. package/lib/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +25 -25
  128. package/lib/xlsx/xform/sheet/col-xform.js +86 -86
  129. package/lib/xlsx/xform/sheet/data-validations-xform.js +257 -257
  130. package/lib/xlsx/xform/sheet/dimension-xform.js +29 -29
  131. package/lib/xlsx/xform/sheet/drawing-xform.js +33 -33
  132. package/lib/xlsx/xform/sheet/ext-lst-xform.js +86 -86
  133. package/lib/xlsx/xform/sheet/header-footer-xform.js +146 -146
  134. package/lib/xlsx/xform/sheet/hyperlink-xform.js +54 -54
  135. package/lib/xlsx/xform/sheet/merge-cell-xform.js +27 -27
  136. package/lib/xlsx/xform/sheet/merges.js +56 -56
  137. package/lib/xlsx/xform/sheet/outline-properties-xform.js +43 -43
  138. package/lib/xlsx/xform/sheet/page-breaks-xform.js +27 -27
  139. package/lib/xlsx/xform/sheet/page-margins-xform.js +49 -49
  140. package/lib/xlsx/xform/sheet/page-setup-properties-xform.js +35 -35
  141. package/lib/xlsx/xform/sheet/page-setup-xform.js +103 -103
  142. package/lib/xlsx/xform/sheet/picture-xform.js +33 -33
  143. package/lib/xlsx/xform/sheet/print-options-xform.js +49 -49
  144. package/lib/xlsx/xform/sheet/row-breaks-xform.js +39 -39
  145. package/lib/xlsx/xform/sheet/row-xform.js +142 -142
  146. package/lib/xlsx/xform/sheet/sheet-format-properties-xform.js +55 -55
  147. package/lib/xlsx/xform/sheet/sheet-properties-xform.js +90 -90
  148. package/lib/xlsx/xform/sheet/sheet-protection-xform.js +89 -89
  149. package/lib/xlsx/xform/sheet/sheet-view-xform.js +202 -202
  150. package/lib/xlsx/xform/sheet/table-part-xform.js +33 -33
  151. package/lib/xlsx/xform/sheet/worksheet-xform.js +548 -548
  152. package/lib/xlsx/xform/simple/boolean-xform.js +31 -31
  153. package/lib/xlsx/xform/simple/date-xform.js +66 -66
  154. package/lib/xlsx/xform/simple/float-xform.js +51 -51
  155. package/lib/xlsx/xform/simple/integer-xform.js +57 -57
  156. package/lib/xlsx/xform/simple/string-xform.js +51 -51
  157. package/lib/xlsx/xform/static-xform.js +64 -64
  158. package/lib/xlsx/xform/strings/phonetic-text-xform.js +98 -98
  159. package/lib/xlsx/xform/strings/rich-text-xform.js +101 -101
  160. package/lib/xlsx/xform/strings/shared-string-xform.js +102 -102
  161. package/lib/xlsx/xform/strings/shared-strings-xform.js +127 -127
  162. package/lib/xlsx/xform/strings/text-xform.js +44 -44
  163. package/lib/xlsx/xform/style/alignment-xform.js +172 -172
  164. package/lib/xlsx/xform/style/border-xform.js +207 -207
  165. package/lib/xlsx/xform/style/color-xform.js +63 -63
  166. package/lib/xlsx/xform/style/dxf-xform.js +111 -111
  167. package/lib/xlsx/xform/style/fill-xform.js +364 -364
  168. package/lib/xlsx/xform/style/font-xform.js +102 -102
  169. package/lib/xlsx/xform/style/numfmt-xform.js +63 -63
  170. package/lib/xlsx/xform/style/protection-xform.js +60 -60
  171. package/lib/xlsx/xform/style/style-xform.js +125 -125
  172. package/lib/xlsx/xform/style/styles-xform.js +527 -527
  173. package/lib/xlsx/xform/style/underline-xform.js +47 -47
  174. package/lib/xlsx/xform/table/auto-filter-xform.js +81 -81
  175. package/lib/xlsx/xform/table/custom-filter-xform.js +33 -33
  176. package/lib/xlsx/xform/table/filter-column-xform.js +96 -96
  177. package/lib/xlsx/xform/table/filter-xform.js +31 -31
  178. package/lib/xlsx/xform/table/table-column-xform.js +44 -44
  179. package/lib/xlsx/xform/table/table-style-info-xform.js +41 -41
  180. package/lib/xlsx/xform/table/table-xform.js +131 -131
  181. package/lib/xlsx/xlsx.js +774 -774
  182. package/lib/xlsx/xml/theme1.js +3 -3
  183. package/lib/xlsx/xml/theme1.xml +317 -317
  184. package/package.json +1 -1
  185. package/dist/LICENSE +0 -22
  186. package/dist/es5/csv/csv.js +0 -182
  187. package/dist/es5/csv/csv.js.map +0 -1
  188. package/dist/es5/csv/line-buffer.js +0 -68
  189. package/dist/es5/csv/line-buffer.js.map +0 -1
  190. package/dist/es5/csv/stream-converter.js +0 -110
  191. package/dist/es5/csv/stream-converter.js.map +0 -1
  192. package/dist/es5/doc/anchor.js +0 -73
  193. package/dist/es5/doc/anchor.js.map +0 -1
  194. package/dist/es5/doc/cell.js +0 -960
  195. package/dist/es5/doc/cell.js.map +0 -1
  196. package/dist/es5/doc/column.js +0 -274
  197. package/dist/es5/doc/column.js.map +0 -1
  198. package/dist/es5/doc/data-validations.js +0 -18
  199. package/dist/es5/doc/data-validations.js.map +0 -1
  200. package/dist/es5/doc/defined-names.js +0 -173
  201. package/dist/es5/doc/defined-names.js.map +0 -1
  202. package/dist/es5/doc/enums.js +0 -49
  203. package/dist/es5/doc/enums.js.map +0 -1
  204. package/dist/es5/doc/image.js +0 -69
  205. package/dist/es5/doc/image.js.map +0 -1
  206. package/dist/es5/doc/modelcontainer.js +0 -16
  207. package/dist/es5/doc/modelcontainer.js.map +0 -1
  208. package/dist/es5/doc/note.js +0 -64
  209. package/dist/es5/doc/note.js.map +0 -1
  210. package/dist/es5/doc/pivot-table.js +0 -137
  211. package/dist/es5/doc/pivot-table.js.map +0 -1
  212. package/dist/es5/doc/range.js +0 -229
  213. package/dist/es5/doc/range.js.map +0 -1
  214. package/dist/es5/doc/row.js +0 -382
  215. package/dist/es5/doc/row.js.map +0 -1
  216. package/dist/es5/doc/table.js +0 -441
  217. package/dist/es5/doc/table.js.map +0 -1
  218. package/dist/es5/doc/workbook.js +0 -205
  219. package/dist/es5/doc/workbook.js.map +0 -1
  220. package/dist/es5/doc/worksheet.js +0 -918
  221. package/dist/es5/doc/worksheet.js.map +0 -1
  222. package/dist/es5/exceljs.bare.js +0 -14
  223. package/dist/es5/exceljs.bare.js.map +0 -1
  224. package/dist/es5/exceljs.browser.js +0 -36
  225. package/dist/es5/exceljs.browser.js.map +0 -1
  226. package/dist/es5/exceljs.nodejs.js +0 -15
  227. package/dist/es5/exceljs.nodejs.js.map +0 -1
  228. package/dist/es5/index.js +0 -15
  229. package/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
  230. package/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
  231. package/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
  232. package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
  233. package/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
  234. package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
  235. package/dist/es5/stream/xlsx/workbook-reader.js +0 -362
  236. package/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
  237. package/dist/es5/stream/xlsx/workbook-writer.js +0 -347
  238. package/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
  239. package/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
  240. package/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
  241. package/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
  242. package/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
  243. package/dist/es5/utils/auto-drain.js +0 -18
  244. package/dist/es5/utils/auto-drain.js.map +0 -1
  245. package/dist/es5/utils/browser-buffer-decode.js +0 -15
  246. package/dist/es5/utils/browser-buffer-decode.js.map +0 -1
  247. package/dist/es5/utils/browser-buffer-encode.js +0 -18
  248. package/dist/es5/utils/browser-buffer-encode.js.map +0 -1
  249. package/dist/es5/utils/cell-matrix.js +0 -149
  250. package/dist/es5/utils/cell-matrix.js.map +0 -1
  251. package/dist/es5/utils/col-cache.js +0 -258
  252. package/dist/es5/utils/col-cache.js.map +0 -1
  253. package/dist/es5/utils/copy-style.js +0 -43
  254. package/dist/es5/utils/copy-style.js.map +0 -1
  255. package/dist/es5/utils/encryptor.js +0 -58
  256. package/dist/es5/utils/encryptor.js.map +0 -1
  257. package/dist/es5/utils/iterate-stream.js +0 -46
  258. package/dist/es5/utils/iterate-stream.js.map +0 -1
  259. package/dist/es5/utils/parse-sax.js +0 -47
  260. package/dist/es5/utils/parse-sax.js.map +0 -1
  261. package/dist/es5/utils/shared-formula.js +0 -42
  262. package/dist/es5/utils/shared-formula.js.map +0 -1
  263. package/dist/es5/utils/shared-strings.js +0 -32
  264. package/dist/es5/utils/shared-strings.js.map +0 -1
  265. package/dist/es5/utils/stream-base64.js +0 -66
  266. package/dist/es5/utils/stream-base64.js.map +0 -1
  267. package/dist/es5/utils/stream-buf.js +0 -343
  268. package/dist/es5/utils/stream-buf.js.map +0 -1
  269. package/dist/es5/utils/string-buf.js +0 -73
  270. package/dist/es5/utils/string-buf.js.map +0 -1
  271. package/dist/es5/utils/string-builder.js +0 -32
  272. package/dist/es5/utils/string-builder.js.map +0 -1
  273. package/dist/es5/utils/stuttered-pipe.js +0 -61
  274. package/dist/es5/utils/stuttered-pipe.js.map +0 -1
  275. package/dist/es5/utils/typed-stack.js +0 -23
  276. package/dist/es5/utils/typed-stack.js.map +0 -1
  277. package/dist/es5/utils/under-dash.js +0 -168
  278. package/dist/es5/utils/under-dash.js.map +0 -1
  279. package/dist/es5/utils/utils.js +0 -204
  280. package/dist/es5/utils/utils.js.map +0 -1
  281. package/dist/es5/utils/xml-stream.js +0 -151
  282. package/dist/es5/utils/xml-stream.js.map +0 -1
  283. package/dist/es5/utils/zip-stream.js +0 -79
  284. package/dist/es5/utils/zip-stream.js.map +0 -1
  285. package/dist/es5/xlsx/defaultnumformats.js +0 -230
  286. package/dist/es5/xlsx/defaultnumformats.js.map +0 -1
  287. package/dist/es5/xlsx/rel-type.js +0 -21
  288. package/dist/es5/xlsx/rel-type.js.map +0 -1
  289. package/dist/es5/xlsx/xform/base-xform.js +0 -139
  290. package/dist/es5/xlsx/xform/base-xform.js.map +0 -1
  291. package/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
  292. package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
  293. package/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
  294. package/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
  295. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
  296. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
  297. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +0 -27
  298. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +0 -1
  299. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
  300. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
  301. package/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
  302. package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
  303. package/dist/es5/xlsx/xform/book/workbook-xform.js +0 -241
  304. package/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
  305. package/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
  306. package/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
  307. package/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
  308. package/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
  309. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
  310. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
  311. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
  312. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
  313. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
  314. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
  315. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
  316. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
  317. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
  318. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
  319. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
  320. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
  321. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
  322. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
  323. package/dist/es5/xlsx/xform/composite-xform.js +0 -51
  324. package/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
  325. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
  326. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
  327. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
  328. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
  329. package/dist/es5/xlsx/xform/core/app-xform.js +0 -93
  330. package/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
  331. package/dist/es5/xlsx/xform/core/content-types-xform.js +0 -127
  332. package/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
  333. package/dist/es5/xlsx/xform/core/core-xform.js +0 -158
  334. package/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
  335. package/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
  336. package/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
  337. package/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
  338. package/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
  339. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
  340. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
  341. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
  342. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
  343. package/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -39
  344. package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
  345. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
  346. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
  347. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
  348. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
  349. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
  350. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
  351. package/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
  352. package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
  353. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
  354. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
  355. package/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
  356. package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
  357. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
  358. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
  359. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
  360. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
  361. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
  362. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
  363. package/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
  364. package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
  365. package/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
  366. package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
  367. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
  368. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
  369. package/dist/es5/xlsx/xform/list-xform.js +0 -91
  370. package/dist/es5/xlsx/xform/list-xform.js.map +0 -1
  371. package/dist/es5/xlsx/xform/pivot-table/cache-field.js +0 -48
  372. package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +0 -1
  373. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +0 -73
  374. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +0 -1
  375. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +0 -93
  376. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +0 -1
  377. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +0 -176
  378. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +0 -1
  379. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
  380. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
  381. package/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -450
  382. package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
  383. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
  384. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
  385. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
  386. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
  387. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
  388. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
  389. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
  390. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
  391. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
  392. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
  393. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
  394. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
  395. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
  396. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
  397. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
  398. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
  399. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
  400. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
  401. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
  402. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
  403. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
  404. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
  405. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
  406. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
  407. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
  408. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
  409. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
  410. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
  411. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
  412. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
  413. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
  414. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
  415. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
  416. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
  417. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
  418. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
  419. package/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
  420. package/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
  421. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
  422. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
  423. package/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
  424. package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
  425. package/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
  426. package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
  427. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
  428. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
  429. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
  430. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
  431. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
  432. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
  433. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
  434. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
  435. package/dist/es5/xlsx/xform/sheet/merges.js +0 -52
  436. package/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
  437. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
  438. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
  439. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
  440. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
  441. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
  442. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
  443. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
  444. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
  445. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
  446. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
  447. package/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
  448. package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
  449. package/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
  450. package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
  451. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
  452. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
  453. package/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
  454. package/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
  455. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
  456. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
  457. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
  458. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
  459. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
  460. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
  461. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
  462. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
  463. package/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
  464. package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
  465. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -522
  466. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
  467. package/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
  468. package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
  469. package/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
  470. package/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
  471. package/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
  472. package/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
  473. package/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
  474. package/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
  475. package/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
  476. package/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
  477. package/dist/es5/xlsx/xform/static-xform.js +0 -61
  478. package/dist/es5/xlsx/xform/static-xform.js.map +0 -1
  479. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
  480. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
  481. package/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
  482. package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
  483. package/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
  484. package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
  485. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
  486. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
  487. package/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
  488. package/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
  489. package/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
  490. package/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
  491. package/dist/es5/xlsx/xform/style/border-xform.js +0 -185
  492. package/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
  493. package/dist/es5/xlsx/xform/style/color-xform.js +0 -66
  494. package/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
  495. package/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
  496. package/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
  497. package/dist/es5/xlsx/xform/style/fill-xform.js +0 -307
  498. package/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
  499. package/dist/es5/xlsx/xform/style/font-xform.js +0 -175
  500. package/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
  501. package/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -58
  502. package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
  503. package/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
  504. package/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
  505. package/dist/es5/xlsx/xform/style/style-xform.js +0 -118
  506. package/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
  507. package/dist/es5/xlsx/xform/style/styles-xform.js +0 -611
  508. package/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
  509. package/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
  510. package/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
  511. package/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
  512. package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
  513. package/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
  514. package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
  515. package/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
  516. package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
  517. package/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
  518. package/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
  519. package/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
  520. package/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
  521. package/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
  522. package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
  523. package/dist/es5/xlsx/xform/table/table-xform.js +0 -122
  524. package/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
  525. package/dist/es5/xlsx/xlsx.js +0 -775
  526. package/dist/es5/xlsx/xlsx.js.map +0 -1
  527. package/dist/es5/xlsx/xml/theme1.js +0 -5
  528. package/dist/es5/xlsx/xml/theme1.js.map +0 -1
  529. package/dist/exceljs.bare.js +0 -57759
  530. package/dist/exceljs.bare.js.map +0 -777
  531. package/dist/exceljs.bare.min.js +0 -45
  532. package/dist/exceljs.bare.min.js.map +0 -1
  533. package/dist/exceljs.js +0 -62398
  534. package/dist/exceljs.js.map +0 -1095
  535. package/dist/exceljs.min.js +0 -45
  536. package/dist/exceljs.min.js.map +0 -1
@@ -1,374 +1,374 @@
1
- const {EventEmitter} = require('events');
2
- const parseSax = require('../../utils/parse-sax');
3
-
4
- const _ = require('../../utils/under-dash');
5
- const utils = require('../../utils/utils');
6
- const colCache = require('../../utils/col-cache');
7
- const Dimensions = require('../../doc/range');
8
-
9
- const Row = require('../../doc/row');
10
- const Column = require('../../doc/column');
11
-
12
- class WorksheetReader extends EventEmitter {
13
- constructor({workbook, id, iterator, options}) {
14
- super();
15
-
16
- this.workbook = workbook;
17
- this.id = id;
18
- this.iterator = iterator;
19
- this.options = options || {};
20
-
21
- // and a name
22
- this.name = `Sheet${this.id}`;
23
-
24
- // column definitions
25
- this._columns = null;
26
- this._keys = {};
27
-
28
- // keep a record of dimensions
29
- this._dimensions = new Dimensions();
30
- }
31
-
32
- // destroy - not a valid operation for a streaming writer
33
- // even though some streamers might be able to, it's a bad idea.
34
- destroy() {
35
- throw new Error('Invalid Operation: destroy');
36
- }
37
-
38
- // return the current dimensions of the writer
39
- get dimensions() {
40
- return this._dimensions;
41
- }
42
-
43
- // =========================================================================
44
- // Columns
45
-
46
- // get the current columns array.
47
- get columns() {
48
- return this._columns;
49
- }
50
-
51
- // get a single column by col number. If it doesn't exist, it and any gaps before it
52
- // are created.
53
- getColumn(c) {
54
- if (typeof c === 'string') {
55
- // if it matches a key'd column, return that
56
- const col = this._keys[c];
57
- if (col) {
58
- return col;
59
- }
60
-
61
- // otherise, assume letter
62
- c = colCache.l2n(c);
63
- }
64
- if (!this._columns) {
65
- this._columns = [];
66
- }
67
- if (c > this._columns.length) {
68
- let n = this._columns.length + 1;
69
- while (n <= c) {
70
- this._columns.push(new Column(this, n++));
71
- }
72
- }
73
- return this._columns[c - 1];
74
- }
75
-
76
- getColumnKey(key) {
77
- return this._keys[key];
78
- }
79
-
80
- setColumnKey(key, value) {
81
- this._keys[key] = value;
82
- }
83
-
84
- deleteColumnKey(key) {
85
- delete this._keys[key];
86
- }
87
-
88
- eachColumnKey(f) {
89
- _.each(this._keys, f);
90
- }
91
-
92
- async read() {
93
- try {
94
- for await (const events of this.parse()) {
95
- for (const {eventType, value} of events) {
96
- this.emit(eventType, value);
97
- }
98
- }
99
- this.emit('finished');
100
- } catch (error) {
101
- this.emit('error', error);
102
- }
103
- }
104
-
105
- async *[Symbol.asyncIterator]() {
106
- for await (const events of this.parse()) {
107
- for (const {eventType, value} of events) {
108
- if (eventType === 'row') {
109
- yield value;
110
- }
111
- }
112
- }
113
- }
114
-
115
- async *parse() {
116
- const {iterator, options} = this;
117
- let emitSheet = false;
118
- let emitHyperlinks = false;
119
- let hyperlinks = null;
120
- switch (options.worksheets) {
121
- case 'emit':
122
- emitSheet = true;
123
- break;
124
- case 'prep':
125
- break;
126
- default:
127
- break;
128
- }
129
- switch (options.hyperlinks) {
130
- case 'emit':
131
- emitHyperlinks = true;
132
- break;
133
- case 'cache':
134
- this.hyperlinks = hyperlinks = {};
135
- break;
136
- default:
137
- break;
138
- }
139
- if (!emitSheet && !emitHyperlinks && !hyperlinks) {
140
- return;
141
- }
142
-
143
- // references
144
- const {sharedStrings, styles, properties} = this.workbook;
145
-
146
- // xml position
147
- let inCols = false;
148
- let inRows = false;
149
- let inHyperlinks = false;
150
-
151
- // parse state
152
- let cols = null;
153
- let row = null;
154
- let c = null;
155
- let current = null;
156
- for await (const events of parseSax(iterator)) {
157
- const worksheetEvents = [];
158
- for (const {eventType, value} of events) {
159
- if (eventType === 'opentag') {
160
- const node = value;
161
- if (emitSheet) {
162
- switch (node.name) {
163
- case 'cols':
164
- inCols = true;
165
- cols = [];
166
- break;
167
- case 'sheetData':
168
- inRows = true;
169
- break;
170
-
171
- case 'col':
172
- if (inCols) {
173
- cols.push({
174
- min: parseInt(node.attributes.min, 10),
175
- max: parseInt(node.attributes.max, 10),
176
- width: parseFloat(node.attributes.width),
177
- styleId: parseInt(node.attributes.style || '0', 10),
178
- });
179
- }
180
- break;
181
-
182
- case 'row':
183
- if (inRows) {
184
- const r = parseInt(node.attributes.r, 10);
185
- row = new Row(this, r);
186
- if (node.attributes.ht) {
187
- row.height = parseFloat(node.attributes.ht);
188
- }
189
- if (node.attributes.s) {
190
- const styleId = parseInt(node.attributes.s, 10);
191
- const style = styles.getStyleModel(styleId);
192
- if (style) {
193
- row.style = style;
194
- }
195
- }
196
- }
197
- break;
198
- case 'c':
199
- if (row) {
200
- c = {
201
- ref: node.attributes.r,
202
- s: parseInt(node.attributes.s, 10),
203
- t: node.attributes.t,
204
- };
205
- }
206
- break;
207
- case 'f':
208
- if (c) {
209
- current = c.f = {text: ''};
210
- }
211
- break;
212
- case 'v':
213
- if (c) {
214
- current = c.v = {text: ''};
215
- }
216
- break;
217
- case 'is':
218
- case 't':
219
- if (c) {
220
- current = c.v = {text: ''};
221
- }
222
- break;
223
- case 'mergeCell':
224
- break;
225
- default:
226
- break;
227
- }
228
- }
229
-
230
- // =================================================================
231
- //
232
- if (emitHyperlinks || hyperlinks) {
233
- switch (node.name) {
234
- case 'hyperlinks':
235
- inHyperlinks = true;
236
- break;
237
- case 'hyperlink':
238
- if (inHyperlinks) {
239
- const hyperlink = {
240
- ref: node.attributes.ref,
241
- rId: node.attributes['r:id'],
242
- };
243
- if (emitHyperlinks) {
244
- worksheetEvents.push({eventType: 'hyperlink', value: hyperlink});
245
- } else {
246
- hyperlinks[hyperlink.ref] = hyperlink;
247
- }
248
- }
249
- break;
250
- default:
251
- break;
252
- }
253
- }
254
- } else if (eventType === 'text') {
255
- // only text data is for sheet values
256
- if (emitSheet) {
257
- if (current) {
258
- current.text += value;
259
- }
260
- }
261
- } else if (eventType === 'closetag') {
262
- const node = value;
263
- if (emitSheet) {
264
- switch (node.name) {
265
- case 'cols':
266
- inCols = false;
267
- this._columns = Column.fromModel(cols);
268
- break;
269
- case 'sheetData':
270
- inRows = false;
271
- break;
272
-
273
- case 'row':
274
- this._dimensions.expandRow(row);
275
- worksheetEvents.push({eventType: 'row', value: row});
276
- row = null;
277
- break;
278
-
279
- case 'c':
280
- if (row && c) {
281
- const address = colCache.decodeAddress(c.ref);
282
- const cell = row.getCell(address.col);
283
- if (c.s) {
284
- const style = styles.getStyleModel(c.s);
285
- if (style) {
286
- cell.style = style;
287
- }
288
- }
289
-
290
- if (c.f) {
291
- const cellValue = {
292
- formula: c.f.text,
293
- };
294
- if (c.v) {
295
- if (c.t === 'str') {
296
- cellValue.result = utils.xmlDecode(c.v.text);
297
- } else {
298
- cellValue.result = parseFloat(c.v.text);
299
- }
300
- }
301
- cell.value = cellValue;
302
- } else if (c.v) {
303
- switch (c.t) {
304
- case 's': {
305
- const index = parseInt(c.v.text, 10);
306
- if (sharedStrings) {
307
- cell.value = sharedStrings[index];
308
- } else {
309
- cell.value = {
310
- sharedString: index,
311
- };
312
- }
313
- break;
314
- }
315
-
316
- case 'inlineStr':
317
- case 'str':
318
- cell.value = utils.xmlDecode(c.v.text);
319
- break;
320
-
321
- case 'e':
322
- cell.value = {error: c.v.text};
323
- break;
324
-
325
- case 'b':
326
- cell.value = parseInt(c.v.text, 10) !== 0;
327
- break;
328
-
329
- default:
330
- if (utils.isDateFmt(cell.numFmt)) {
331
- cell.value = utils.excelToDate(
332
- parseFloat(c.v.text),
333
- properties.model && properties.model.date1904
334
- );
335
- } else {
336
- cell.value = parseFloat(c.v.text);
337
- }
338
- break;
339
- }
340
- }
341
- if (hyperlinks) {
342
- const hyperlink = hyperlinks[c.ref];
343
- if (hyperlink) {
344
- cell.text = cell.value;
345
- cell.value = undefined;
346
- cell.hyperlink = hyperlink;
347
- }
348
- }
349
- c = null;
350
- }
351
- break;
352
- default:
353
- break;
354
- }
355
- }
356
- if (emitHyperlinks || hyperlinks) {
357
- switch (node.name) {
358
- case 'hyperlinks':
359
- inHyperlinks = false;
360
- break;
361
- default:
362
- break;
363
- }
364
- }
365
- }
366
- }
367
- if (worksheetEvents.length > 0) {
368
- yield worksheetEvents;
369
- }
370
- }
371
- }
372
- }
373
-
374
- module.exports = WorksheetReader;
1
+ const {EventEmitter} = require('events');
2
+ const parseSax = require('../../utils/parse-sax');
3
+
4
+ const _ = require('../../utils/under-dash');
5
+ const utils = require('../../utils/utils');
6
+ const colCache = require('../../utils/col-cache');
7
+ const Dimensions = require('../../doc/range');
8
+
9
+ const Row = require('../../doc/row');
10
+ const Column = require('../../doc/column');
11
+
12
+ class WorksheetReader extends EventEmitter {
13
+ constructor({workbook, id, iterator, options}) {
14
+ super();
15
+
16
+ this.workbook = workbook;
17
+ this.id = id;
18
+ this.iterator = iterator;
19
+ this.options = options || {};
20
+
21
+ // and a name
22
+ this.name = `Sheet${this.id}`;
23
+
24
+ // column definitions
25
+ this._columns = null;
26
+ this._keys = {};
27
+
28
+ // keep a record of dimensions
29
+ this._dimensions = new Dimensions();
30
+ }
31
+
32
+ // destroy - not a valid operation for a streaming writer
33
+ // even though some streamers might be able to, it's a bad idea.
34
+ destroy() {
35
+ throw new Error('Invalid Operation: destroy');
36
+ }
37
+
38
+ // return the current dimensions of the writer
39
+ get dimensions() {
40
+ return this._dimensions;
41
+ }
42
+
43
+ // =========================================================================
44
+ // Columns
45
+
46
+ // get the current columns array.
47
+ get columns() {
48
+ return this._columns;
49
+ }
50
+
51
+ // get a single column by col number. If it doesn't exist, it and any gaps before it
52
+ // are created.
53
+ getColumn(c) {
54
+ if (typeof c === 'string') {
55
+ // if it matches a key'd column, return that
56
+ const col = this._keys[c];
57
+ if (col) {
58
+ return col;
59
+ }
60
+
61
+ // otherise, assume letter
62
+ c = colCache.l2n(c);
63
+ }
64
+ if (!this._columns) {
65
+ this._columns = [];
66
+ }
67
+ if (c > this._columns.length) {
68
+ let n = this._columns.length + 1;
69
+ while (n <= c) {
70
+ this._columns.push(new Column(this, n++));
71
+ }
72
+ }
73
+ return this._columns[c - 1];
74
+ }
75
+
76
+ getColumnKey(key) {
77
+ return this._keys[key];
78
+ }
79
+
80
+ setColumnKey(key, value) {
81
+ this._keys[key] = value;
82
+ }
83
+
84
+ deleteColumnKey(key) {
85
+ delete this._keys[key];
86
+ }
87
+
88
+ eachColumnKey(f) {
89
+ _.each(this._keys, f);
90
+ }
91
+
92
+ async read() {
93
+ try {
94
+ for await (const events of this.parse()) {
95
+ for (const {eventType, value} of events) {
96
+ this.emit(eventType, value);
97
+ }
98
+ }
99
+ this.emit('finished');
100
+ } catch (error) {
101
+ this.emit('error', error);
102
+ }
103
+ }
104
+
105
+ async *[Symbol.asyncIterator]() {
106
+ for await (const events of this.parse()) {
107
+ for (const {eventType, value} of events) {
108
+ if (eventType === 'row') {
109
+ yield value;
110
+ }
111
+ }
112
+ }
113
+ }
114
+
115
+ async *parse() {
116
+ const {iterator, options} = this;
117
+ let emitSheet = false;
118
+ let emitHyperlinks = false;
119
+ let hyperlinks = null;
120
+ switch (options.worksheets) {
121
+ case 'emit':
122
+ emitSheet = true;
123
+ break;
124
+ case 'prep':
125
+ break;
126
+ default:
127
+ break;
128
+ }
129
+ switch (options.hyperlinks) {
130
+ case 'emit':
131
+ emitHyperlinks = true;
132
+ break;
133
+ case 'cache':
134
+ this.hyperlinks = hyperlinks = {};
135
+ break;
136
+ default:
137
+ break;
138
+ }
139
+ if (!emitSheet && !emitHyperlinks && !hyperlinks) {
140
+ return;
141
+ }
142
+
143
+ // references
144
+ const {sharedStrings, styles, properties} = this.workbook;
145
+
146
+ // xml position
147
+ let inCols = false;
148
+ let inRows = false;
149
+ let inHyperlinks = false;
150
+
151
+ // parse state
152
+ let cols = null;
153
+ let row = null;
154
+ let c = null;
155
+ let current = null;
156
+ for await (const events of parseSax(iterator)) {
157
+ const worksheetEvents = [];
158
+ for (const {eventType, value} of events) {
159
+ if (eventType === 'opentag') {
160
+ const node = value;
161
+ if (emitSheet) {
162
+ switch (node.name) {
163
+ case 'cols':
164
+ inCols = true;
165
+ cols = [];
166
+ break;
167
+ case 'sheetData':
168
+ inRows = true;
169
+ break;
170
+
171
+ case 'col':
172
+ if (inCols) {
173
+ cols.push({
174
+ min: parseInt(node.attributes.min, 10),
175
+ max: parseInt(node.attributes.max, 10),
176
+ width: parseFloat(node.attributes.width),
177
+ styleId: parseInt(node.attributes.style || '0', 10),
178
+ });
179
+ }
180
+ break;
181
+
182
+ case 'row':
183
+ if (inRows) {
184
+ const r = parseInt(node.attributes.r, 10);
185
+ row = new Row(this, r);
186
+ if (node.attributes.ht) {
187
+ row.height = parseFloat(node.attributes.ht);
188
+ }
189
+ if (node.attributes.s) {
190
+ const styleId = parseInt(node.attributes.s, 10);
191
+ const style = styles.getStyleModel(styleId);
192
+ if (style) {
193
+ row.style = style;
194
+ }
195
+ }
196
+ }
197
+ break;
198
+ case 'c':
199
+ if (row) {
200
+ c = {
201
+ ref: node.attributes.r,
202
+ s: parseInt(node.attributes.s, 10),
203
+ t: node.attributes.t,
204
+ };
205
+ }
206
+ break;
207
+ case 'f':
208
+ if (c) {
209
+ current = c.f = {text: ''};
210
+ }
211
+ break;
212
+ case 'v':
213
+ if (c) {
214
+ current = c.v = {text: ''};
215
+ }
216
+ break;
217
+ case 'is':
218
+ case 't':
219
+ if (c) {
220
+ current = c.v = {text: ''};
221
+ }
222
+ break;
223
+ case 'mergeCell':
224
+ break;
225
+ default:
226
+ break;
227
+ }
228
+ }
229
+
230
+ // =================================================================
231
+ //
232
+ if (emitHyperlinks || hyperlinks) {
233
+ switch (node.name) {
234
+ case 'hyperlinks':
235
+ inHyperlinks = true;
236
+ break;
237
+ case 'hyperlink':
238
+ if (inHyperlinks) {
239
+ const hyperlink = {
240
+ ref: node.attributes.ref,
241
+ rId: node.attributes['r:id'],
242
+ };
243
+ if (emitHyperlinks) {
244
+ worksheetEvents.push({eventType: 'hyperlink', value: hyperlink});
245
+ } else {
246
+ hyperlinks[hyperlink.ref] = hyperlink;
247
+ }
248
+ }
249
+ break;
250
+ default:
251
+ break;
252
+ }
253
+ }
254
+ } else if (eventType === 'text') {
255
+ // only text data is for sheet values
256
+ if (emitSheet) {
257
+ if (current) {
258
+ current.text += value;
259
+ }
260
+ }
261
+ } else if (eventType === 'closetag') {
262
+ const node = value;
263
+ if (emitSheet) {
264
+ switch (node.name) {
265
+ case 'cols':
266
+ inCols = false;
267
+ this._columns = Column.fromModel(cols);
268
+ break;
269
+ case 'sheetData':
270
+ inRows = false;
271
+ break;
272
+
273
+ case 'row':
274
+ this._dimensions.expandRow(row);
275
+ worksheetEvents.push({eventType: 'row', value: row});
276
+ row = null;
277
+ break;
278
+
279
+ case 'c':
280
+ if (row && c) {
281
+ const address = colCache.decodeAddress(c.ref);
282
+ const cell = row.getCell(address.col);
283
+ if (c.s) {
284
+ const style = styles.getStyleModel(c.s);
285
+ if (style) {
286
+ cell.style = style;
287
+ }
288
+ }
289
+
290
+ if (c.f) {
291
+ const cellValue = {
292
+ formula: c.f.text,
293
+ };
294
+ if (c.v) {
295
+ if (c.t === 'str') {
296
+ cellValue.result = utils.xmlDecode(c.v.text);
297
+ } else {
298
+ cellValue.result = parseFloat(c.v.text);
299
+ }
300
+ }
301
+ cell.value = cellValue;
302
+ } else if (c.v) {
303
+ switch (c.t) {
304
+ case 's': {
305
+ const index = parseInt(c.v.text, 10);
306
+ if (sharedStrings) {
307
+ cell.value = sharedStrings[index];
308
+ } else {
309
+ cell.value = {
310
+ sharedString: index,
311
+ };
312
+ }
313
+ break;
314
+ }
315
+
316
+ case 'inlineStr':
317
+ case 'str':
318
+ cell.value = utils.xmlDecode(c.v.text);
319
+ break;
320
+
321
+ case 'e':
322
+ cell.value = {error: c.v.text};
323
+ break;
324
+
325
+ case 'b':
326
+ cell.value = parseInt(c.v.text, 10) !== 0;
327
+ break;
328
+
329
+ default:
330
+ if (utils.isDateFmt(cell.numFmt)) {
331
+ cell.value = utils.excelToDate(
332
+ parseFloat(c.v.text),
333
+ properties.model && properties.model.date1904
334
+ );
335
+ } else {
336
+ cell.value = parseFloat(c.v.text);
337
+ }
338
+ break;
339
+ }
340
+ }
341
+ if (hyperlinks) {
342
+ const hyperlink = hyperlinks[c.ref];
343
+ if (hyperlink) {
344
+ cell.text = cell.value;
345
+ cell.value = undefined;
346
+ cell.hyperlink = hyperlink;
347
+ }
348
+ }
349
+ c = null;
350
+ }
351
+ break;
352
+ default:
353
+ break;
354
+ }
355
+ }
356
+ if (emitHyperlinks || hyperlinks) {
357
+ switch (node.name) {
358
+ case 'hyperlinks':
359
+ inHyperlinks = false;
360
+ break;
361
+ default:
362
+ break;
363
+ }
364
+ }
365
+ }
366
+ }
367
+ if (worksheetEvents.length > 0) {
368
+ yield worksheetEvents;
369
+ }
370
+ }
371
+ }
372
+ }
373
+
374
+ module.exports = WorksheetReader;