@alienkarma/exceljs 4.4.0-fork.11 → 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 -367
  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 -2
  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,498 +1,498 @@
1
- const utils = require('../../../utils/utils');
2
- const BaseXform = require('../base-xform');
3
- const Range = require('../../../doc/range');
4
- const Enums = require('../../../doc/enums');
5
-
6
- const RichTextXform = require('../strings/rich-text-xform');
7
-
8
- function getValueType(v) {
9
- if (v === null || v === undefined) {
10
- return Enums.ValueType.Null;
11
- }
12
- if (v instanceof String || typeof v === 'string') {
13
- return Enums.ValueType.String;
14
- }
15
- if (typeof v === 'number') {
16
- return Enums.ValueType.Number;
17
- }
18
- if (typeof v === 'boolean') {
19
- return Enums.ValueType.Boolean;
20
- }
21
- if (v instanceof Date) {
22
- return Enums.ValueType.Date;
23
- }
24
- if (v.text && v.hyperlink) {
25
- return Enums.ValueType.Hyperlink;
26
- }
27
- if (v.formula) {
28
- return Enums.ValueType.Formula;
29
- }
30
- if (v.error) {
31
- return Enums.ValueType.Error;
32
- }
33
- throw new Error('I could not understand type of value');
34
- }
35
-
36
- function getEffectiveCellType(cell) {
37
- switch (cell.type) {
38
- case Enums.ValueType.Formula:
39
- return getValueType(cell.result);
40
- default:
41
- return cell.type;
42
- }
43
- }
44
-
45
- class CellXform extends BaseXform {
46
- constructor() {
47
- super();
48
-
49
- this.richTextXForm = new RichTextXform();
50
- }
51
-
52
- get tag() {
53
- return 'c';
54
- }
55
-
56
- prepare(model, options) {
57
- const styleId = options.styles.addStyleModel(model.style || {}, getEffectiveCellType(model));
58
- if (styleId) {
59
- model.styleId = styleId;
60
- }
61
-
62
- if (model.comment) {
63
- options.comments.push({...model.comment, ref: model.address});
64
- }
65
-
66
- switch (model.type) {
67
- case Enums.ValueType.String:
68
- case Enums.ValueType.RichText:
69
- if (options.sharedStrings) {
70
- model.ssId = options.sharedStrings.add(model.value);
71
- }
72
- break;
73
-
74
- case Enums.ValueType.Date:
75
- if (options.date1904) {
76
- model.date1904 = true;
77
- }
78
- break;
79
-
80
- case Enums.ValueType.Hyperlink:
81
- if (options.sharedStrings && model.text !== undefined && model.text !== null) {
82
- model.ssId = options.sharedStrings.add(model.text);
83
- }
84
- options.hyperlinks.push({
85
- address: model.address,
86
- target: model.hyperlink,
87
- tooltip: model.tooltip,
88
- });
89
- break;
90
-
91
- case Enums.ValueType.Merge:
92
- options.merges.add(model);
93
- break;
94
-
95
- case Enums.ValueType.Formula:
96
- if (options.date1904) {
97
- // in case valueType is date
98
- model.date1904 = true;
99
- }
100
-
101
- if (model.shareType === 'shared') {
102
- model.si = options.siFormulae++;
103
- }
104
-
105
- if (model.formula) {
106
- options.formulae[model.address] = model;
107
- } else if (model.sharedFormula) {
108
- const master = options.formulae[model.sharedFormula];
109
- if (!master) {
110
- throw new Error(
111
- `Shared Formula master must exist above and or left of clone for cell ${model.address}`
112
- );
113
- }
114
- if (master.si === undefined) {
115
- master.shareType = 'shared';
116
- master.si = options.siFormulae++;
117
- master.range = new Range(master.address, model.address);
118
- } else if (master.range) {
119
- master.range.expandToAddress(model.address);
120
- }
121
- model.si = master.si;
122
- }
123
- break;
124
-
125
- default:
126
- break;
127
- }
128
- }
129
-
130
- renderFormula(xmlStream, model) {
131
- let attrs = null;
132
- switch (model.shareType) {
133
- case 'shared':
134
- attrs = {
135
- t: 'shared',
136
- ref: model.ref || model.range.range,
137
- si: model.si,
138
- };
139
- break;
140
-
141
- case 'array':
142
- attrs = {
143
- t: 'array',
144
- ref: model.ref,
145
- };
146
- break;
147
-
148
- default:
149
- if (model.si !== undefined) {
150
- attrs = {
151
- t: 'shared',
152
- si: model.si,
153
- };
154
- }
155
- break;
156
- }
157
-
158
- switch (getValueType(model.result)) {
159
- case Enums.ValueType.Null: // ?
160
- xmlStream.leafNode('f', attrs, model.formula);
161
- break;
162
-
163
- case Enums.ValueType.String:
164
- // oddly, formula results don't ever use shared strings
165
- xmlStream.addAttribute('t', 'str');
166
- xmlStream.leafNode('f', attrs, model.formula);
167
- xmlStream.leafNode('v', null, model.result);
168
- break;
169
-
170
- case Enums.ValueType.Number:
171
- xmlStream.leafNode('f', attrs, model.formula);
172
- xmlStream.leafNode('v', null, model.result);
173
- break;
174
-
175
- case Enums.ValueType.Boolean:
176
- xmlStream.addAttribute('t', 'b');
177
- xmlStream.leafNode('f', attrs, model.formula);
178
- xmlStream.leafNode('v', null, model.result ? 1 : 0);
179
- break;
180
-
181
- case Enums.ValueType.Error:
182
- xmlStream.addAttribute('t', 'e');
183
- xmlStream.leafNode('f', attrs, model.formula);
184
- xmlStream.leafNode('v', null, model.result.error);
185
- break;
186
-
187
- case Enums.ValueType.Date:
188
- xmlStream.leafNode('f', attrs, model.formula);
189
- xmlStream.leafNode('v', null, utils.dateToExcel(model.result, model.date1904));
190
- break;
191
-
192
- // case Enums.ValueType.Hyperlink: // ??
193
- // case Enums.ValueType.Formula:
194
- default:
195
- throw new Error('I could not understand type of value');
196
- }
197
- }
198
-
199
- render(xmlStream, model) {
200
- if (model.type === Enums.ValueType.Null && !model.styleId) {
201
- // if null and no style, exit
202
- return;
203
- }
204
-
205
- xmlStream.openNode('c');
206
- xmlStream.addAttribute('r', model.address);
207
-
208
- if (model.styleId) {
209
- xmlStream.addAttribute('s', model.styleId);
210
- }
211
-
212
- switch (model.type) {
213
- case Enums.ValueType.Null:
214
- break;
215
-
216
- case Enums.ValueType.Number:
217
- xmlStream.leafNode('v', null, model.value);
218
- break;
219
-
220
- case Enums.ValueType.Boolean:
221
- xmlStream.addAttribute('t', 'b');
222
- xmlStream.leafNode('v', null, model.value ? '1' : '0');
223
- break;
224
-
225
- case Enums.ValueType.Error:
226
- xmlStream.addAttribute('t', 'e');
227
- xmlStream.leafNode('v', null, model.value.error);
228
- break;
229
-
230
- case Enums.ValueType.String:
231
- case Enums.ValueType.RichText:
232
- if (model.ssId !== undefined) {
233
- xmlStream.addAttribute('t', 's');
234
- xmlStream.leafNode('v', null, model.ssId);
235
- } else if (model.value && model.value.richText) {
236
- xmlStream.addAttribute('t', 'inlineStr');
237
- xmlStream.openNode('is');
238
- model.value.richText.forEach(text => {
239
- this.richTextXForm.render(xmlStream, text);
240
- });
241
- xmlStream.closeNode('is');
242
- } else {
243
- xmlStream.addAttribute('t', 'str');
244
- xmlStream.leafNode('v', null, model.value);
245
- }
246
- break;
247
-
248
- case Enums.ValueType.Date:
249
- xmlStream.leafNode('v', null, utils.dateToExcel(model.value, model.date1904));
250
- break;
251
-
252
- case Enums.ValueType.Hyperlink:
253
- if (model.ssId !== undefined) {
254
- xmlStream.addAttribute('t', 's');
255
- xmlStream.leafNode('v', null, model.ssId);
256
- } else {
257
- xmlStream.addAttribute('t', 'str');
258
- xmlStream.leafNode('v', null, model.text);
259
- }
260
- break;
261
-
262
- case Enums.ValueType.Formula:
263
- this.renderFormula(xmlStream, model);
264
- break;
265
-
266
- case Enums.ValueType.Merge:
267
- // nothing to add
268
- break;
269
-
270
- default:
271
- break;
272
- }
273
-
274
- xmlStream.closeNode(); // </c>
275
- }
276
-
277
- parseOpen(node) {
278
- if (this.parser) {
279
- this.parser.parseOpen(node);
280
- return true;
281
- }
282
- switch (node.name) {
283
- case 'c':
284
- // const address = colCache.decodeAddress(node.attributes.r);
285
- this.model = {
286
- address: node.attributes.r,
287
- };
288
- this.t = node.attributes.t;
289
- if (node.attributes.s) {
290
- this.model.styleId = parseInt(node.attributes.s, 10);
291
- }
292
- return true;
293
-
294
- case 'f':
295
- this.currentNode = 'f';
296
- this.model.si = node.attributes.si;
297
- this.model.shareType = node.attributes.t;
298
- this.model.ref = node.attributes.ref;
299
- return true;
300
-
301
- case 'v':
302
- this.currentNode = 'v';
303
- return true;
304
-
305
- case 't':
306
- this.currentNode = 't';
307
- return true;
308
-
309
- case 'r':
310
- this.parser = this.richTextXForm;
311
- this.parser.parseOpen(node);
312
- return true;
313
-
314
- default:
315
- return false;
316
- }
317
- }
318
-
319
- parseText(text) {
320
- if (this.parser) {
321
- this.parser.parseText(text);
322
- return;
323
- }
324
- switch (this.currentNode) {
325
- case 'f':
326
- this.model.formula = this.model.formula ? this.model.formula + text : text;
327
- break;
328
- case 'v':
329
- case 't':
330
- if (this.model.value && this.model.value.richText) {
331
- this.model.value.richText.text = this.model.value.richText.text
332
- ? this.model.value.richText.text + text
333
- : text;
334
- } else {
335
- this.model.value = this.model.value ? this.model.value + text : text;
336
- }
337
- break;
338
- default:
339
- break;
340
- }
341
- }
342
-
343
- parseClose(name) {
344
- switch (name) {
345
- case 'c': {
346
- const {model} = this;
347
-
348
- // first guess on cell type
349
- if (model.formula || model.shareType) {
350
- model.type = Enums.ValueType.Formula;
351
- if (model.value) {
352
- if (this.t === 'str') {
353
- model.result = utils.xmlDecode(model.value);
354
- } else if (this.t === 'b') {
355
- model.result = parseInt(model.value, 10) !== 0;
356
- } else if (this.t === 'e') {
357
- model.result = {error: model.value};
358
- } else {
359
- model.result = parseFloat(model.value);
360
- }
361
- model.value = undefined;
362
- }
363
- } else if (model.value !== undefined) {
364
- switch (this.t) {
365
- case 's':
366
- model.type = Enums.ValueType.String;
367
- model.value = parseInt(model.value, 10);
368
- break;
369
- case 'str':
370
- model.type = Enums.ValueType.String;
371
- model.value = utils.xmlDecode(model.value);
372
- break;
373
- case 'inlineStr':
374
- model.type = Enums.ValueType.String;
375
- break;
376
- case 'b':
377
- model.type = Enums.ValueType.Boolean;
378
- model.value = parseInt(model.value, 10) !== 0;
379
- break;
380
- case 'e':
381
- model.type = Enums.ValueType.Error;
382
- model.value = {error: model.value};
383
- break;
384
- default:
385
- model.type = Enums.ValueType.Number;
386
- model.value = parseFloat(model.value);
387
- break;
388
- }
389
- } else if (model.styleId) {
390
- model.type = Enums.ValueType.Null;
391
- } else {
392
- model.type = Enums.ValueType.Merge;
393
- }
394
- return false;
395
- }
396
-
397
- case 'f':
398
- case 'v':
399
- case 'is':
400
- this.currentNode = undefined;
401
- return true;
402
-
403
- case 't':
404
- if (this.parser) {
405
- this.parser.parseClose(name);
406
- return true;
407
- }
408
- this.currentNode = undefined;
409
- return true;
410
-
411
- case 'r':
412
- this.model.value = this.model.value || {};
413
- this.model.value.richText = this.model.value.richText || [];
414
- this.model.value.richText.push(this.parser.model);
415
- this.parser = undefined;
416
- this.currentNode = undefined;
417
- return true;
418
-
419
- default:
420
- if (this.parser) {
421
- this.parser.parseClose(name);
422
- return true;
423
- }
424
- return false;
425
- }
426
- }
427
-
428
- reconcile(model, options) {
429
- const style = model.styleId && options.styles && options.styles.getStyleModel(model.styleId);
430
- if (style) {
431
- model.style = style;
432
- }
433
- if (model.styleId !== undefined) {
434
- model.styleId = undefined;
435
- }
436
-
437
- switch (model.type) {
438
- case Enums.ValueType.String:
439
- if (typeof model.value === 'number') {
440
- if (options.sharedStrings) {
441
- model.value = options.sharedStrings.getString(model.value);
442
- }
443
- }
444
- if (model.value.richText) {
445
- model.type = Enums.ValueType.RichText;
446
- }
447
- break;
448
-
449
- case Enums.ValueType.Number:
450
- if (style && utils.isDateFmt(style.numFmt)) {
451
- model.type = Enums.ValueType.Date;
452
- model.value = utils.excelToDate(model.value, options.date1904);
453
- }
454
- break;
455
-
456
- case Enums.ValueType.Formula:
457
- if (model.result !== undefined && style && utils.isDateFmt(style.numFmt)) {
458
- model.result = utils.excelToDate(model.result, options.date1904);
459
- }
460
- if (model.shareType === 'shared') {
461
- if (model.ref) {
462
- // master
463
- options.formulae[model.si] = model.address;
464
- } else {
465
- // slave
466
- model.sharedFormula = options.formulae[model.si];
467
- delete model.shareType;
468
- }
469
- delete model.si;
470
- }
471
- break;
472
-
473
- default:
474
- break;
475
- }
476
-
477
- // look for hyperlink
478
- const hyperlink = options.hyperlinkMap[model.address];
479
- if (hyperlink) {
480
- if (model.type === Enums.ValueType.Formula) {
481
- model.text = model.result;
482
- model.result = undefined;
483
- } else {
484
- model.text = model.value;
485
- model.value = undefined;
486
- }
487
- model.type = Enums.ValueType.Hyperlink;
488
- model.hyperlink = hyperlink;
489
- }
490
-
491
- const comment = options.commentsMap && options.commentsMap[model.address];
492
- if (comment) {
493
- model.comment = comment;
494
- }
495
- }
496
- }
497
-
498
- module.exports = CellXform;
1
+ const utils = require('../../../utils/utils');
2
+ const BaseXform = require('../base-xform');
3
+ const Range = require('../../../doc/range');
4
+ const Enums = require('../../../doc/enums');
5
+
6
+ const RichTextXform = require('../strings/rich-text-xform');
7
+
8
+ function getValueType(v) {
9
+ if (v === null || v === undefined) {
10
+ return Enums.ValueType.Null;
11
+ }
12
+ if (v instanceof String || typeof v === 'string') {
13
+ return Enums.ValueType.String;
14
+ }
15
+ if (typeof v === 'number') {
16
+ return Enums.ValueType.Number;
17
+ }
18
+ if (typeof v === 'boolean') {
19
+ return Enums.ValueType.Boolean;
20
+ }
21
+ if (v instanceof Date) {
22
+ return Enums.ValueType.Date;
23
+ }
24
+ if (v.text && v.hyperlink) {
25
+ return Enums.ValueType.Hyperlink;
26
+ }
27
+ if (v.formula) {
28
+ return Enums.ValueType.Formula;
29
+ }
30
+ if (v.error) {
31
+ return Enums.ValueType.Error;
32
+ }
33
+ throw new Error('I could not understand type of value');
34
+ }
35
+
36
+ function getEffectiveCellType(cell) {
37
+ switch (cell.type) {
38
+ case Enums.ValueType.Formula:
39
+ return getValueType(cell.result);
40
+ default:
41
+ return cell.type;
42
+ }
43
+ }
44
+
45
+ class CellXform extends BaseXform {
46
+ constructor() {
47
+ super();
48
+
49
+ this.richTextXForm = new RichTextXform();
50
+ }
51
+
52
+ get tag() {
53
+ return 'c';
54
+ }
55
+
56
+ prepare(model, options) {
57
+ const styleId = options.styles.addStyleModel(model.style || {}, getEffectiveCellType(model));
58
+ if (styleId) {
59
+ model.styleId = styleId;
60
+ }
61
+
62
+ if (model.comment) {
63
+ options.comments.push({...model.comment, ref: model.address});
64
+ }
65
+
66
+ switch (model.type) {
67
+ case Enums.ValueType.String:
68
+ case Enums.ValueType.RichText:
69
+ if (options.sharedStrings) {
70
+ model.ssId = options.sharedStrings.add(model.value);
71
+ }
72
+ break;
73
+
74
+ case Enums.ValueType.Date:
75
+ if (options.date1904) {
76
+ model.date1904 = true;
77
+ }
78
+ break;
79
+
80
+ case Enums.ValueType.Hyperlink:
81
+ if (options.sharedStrings && model.text !== undefined && model.text !== null) {
82
+ model.ssId = options.sharedStrings.add(model.text);
83
+ }
84
+ options.hyperlinks.push({
85
+ address: model.address,
86
+ target: model.hyperlink,
87
+ tooltip: model.tooltip,
88
+ });
89
+ break;
90
+
91
+ case Enums.ValueType.Merge:
92
+ options.merges.add(model);
93
+ break;
94
+
95
+ case Enums.ValueType.Formula:
96
+ if (options.date1904) {
97
+ // in case valueType is date
98
+ model.date1904 = true;
99
+ }
100
+
101
+ if (model.shareType === 'shared') {
102
+ model.si = options.siFormulae++;
103
+ }
104
+
105
+ if (model.formula) {
106
+ options.formulae[model.address] = model;
107
+ } else if (model.sharedFormula) {
108
+ const master = options.formulae[model.sharedFormula];
109
+ if (!master) {
110
+ throw new Error(
111
+ `Shared Formula master must exist above and or left of clone for cell ${model.address}`
112
+ );
113
+ }
114
+ if (master.si === undefined) {
115
+ master.shareType = 'shared';
116
+ master.si = options.siFormulae++;
117
+ master.range = new Range(master.address, model.address);
118
+ } else if (master.range) {
119
+ master.range.expandToAddress(model.address);
120
+ }
121
+ model.si = master.si;
122
+ }
123
+ break;
124
+
125
+ default:
126
+ break;
127
+ }
128
+ }
129
+
130
+ renderFormula(xmlStream, model) {
131
+ let attrs = null;
132
+ switch (model.shareType) {
133
+ case 'shared':
134
+ attrs = {
135
+ t: 'shared',
136
+ ref: model.ref || model.range.range,
137
+ si: model.si,
138
+ };
139
+ break;
140
+
141
+ case 'array':
142
+ attrs = {
143
+ t: 'array',
144
+ ref: model.ref,
145
+ };
146
+ break;
147
+
148
+ default:
149
+ if (model.si !== undefined) {
150
+ attrs = {
151
+ t: 'shared',
152
+ si: model.si,
153
+ };
154
+ }
155
+ break;
156
+ }
157
+
158
+ switch (getValueType(model.result)) {
159
+ case Enums.ValueType.Null: // ?
160
+ xmlStream.leafNode('f', attrs, model.formula);
161
+ break;
162
+
163
+ case Enums.ValueType.String:
164
+ // oddly, formula results don't ever use shared strings
165
+ xmlStream.addAttribute('t', 'str');
166
+ xmlStream.leafNode('f', attrs, model.formula);
167
+ xmlStream.leafNode('v', null, model.result);
168
+ break;
169
+
170
+ case Enums.ValueType.Number:
171
+ xmlStream.leafNode('f', attrs, model.formula);
172
+ xmlStream.leafNode('v', null, model.result);
173
+ break;
174
+
175
+ case Enums.ValueType.Boolean:
176
+ xmlStream.addAttribute('t', 'b');
177
+ xmlStream.leafNode('f', attrs, model.formula);
178
+ xmlStream.leafNode('v', null, model.result ? 1 : 0);
179
+ break;
180
+
181
+ case Enums.ValueType.Error:
182
+ xmlStream.addAttribute('t', 'e');
183
+ xmlStream.leafNode('f', attrs, model.formula);
184
+ xmlStream.leafNode('v', null, model.result.error);
185
+ break;
186
+
187
+ case Enums.ValueType.Date:
188
+ xmlStream.leafNode('f', attrs, model.formula);
189
+ xmlStream.leafNode('v', null, utils.dateToExcel(model.result, model.date1904));
190
+ break;
191
+
192
+ // case Enums.ValueType.Hyperlink: // ??
193
+ // case Enums.ValueType.Formula:
194
+ default:
195
+ throw new Error('I could not understand type of value');
196
+ }
197
+ }
198
+
199
+ render(xmlStream, model) {
200
+ if (model.type === Enums.ValueType.Null && !model.styleId) {
201
+ // if null and no style, exit
202
+ return;
203
+ }
204
+
205
+ xmlStream.openNode('c');
206
+ xmlStream.addAttribute('r', model.address);
207
+
208
+ if (model.styleId) {
209
+ xmlStream.addAttribute('s', model.styleId);
210
+ }
211
+
212
+ switch (model.type) {
213
+ case Enums.ValueType.Null:
214
+ break;
215
+
216
+ case Enums.ValueType.Number:
217
+ xmlStream.leafNode('v', null, model.value);
218
+ break;
219
+
220
+ case Enums.ValueType.Boolean:
221
+ xmlStream.addAttribute('t', 'b');
222
+ xmlStream.leafNode('v', null, model.value ? '1' : '0');
223
+ break;
224
+
225
+ case Enums.ValueType.Error:
226
+ xmlStream.addAttribute('t', 'e');
227
+ xmlStream.leafNode('v', null, model.value.error);
228
+ break;
229
+
230
+ case Enums.ValueType.String:
231
+ case Enums.ValueType.RichText:
232
+ if (model.ssId !== undefined) {
233
+ xmlStream.addAttribute('t', 's');
234
+ xmlStream.leafNode('v', null, model.ssId);
235
+ } else if (model.value && model.value.richText) {
236
+ xmlStream.addAttribute('t', 'inlineStr');
237
+ xmlStream.openNode('is');
238
+ model.value.richText.forEach(text => {
239
+ this.richTextXForm.render(xmlStream, text);
240
+ });
241
+ xmlStream.closeNode('is');
242
+ } else {
243
+ xmlStream.addAttribute('t', 'str');
244
+ xmlStream.leafNode('v', null, model.value);
245
+ }
246
+ break;
247
+
248
+ case Enums.ValueType.Date:
249
+ xmlStream.leafNode('v', null, utils.dateToExcel(model.value, model.date1904));
250
+ break;
251
+
252
+ case Enums.ValueType.Hyperlink:
253
+ if (model.ssId !== undefined) {
254
+ xmlStream.addAttribute('t', 's');
255
+ xmlStream.leafNode('v', null, model.ssId);
256
+ } else {
257
+ xmlStream.addAttribute('t', 'str');
258
+ xmlStream.leafNode('v', null, model.text);
259
+ }
260
+ break;
261
+
262
+ case Enums.ValueType.Formula:
263
+ this.renderFormula(xmlStream, model);
264
+ break;
265
+
266
+ case Enums.ValueType.Merge:
267
+ // nothing to add
268
+ break;
269
+
270
+ default:
271
+ break;
272
+ }
273
+
274
+ xmlStream.closeNode(); // </c>
275
+ }
276
+
277
+ parseOpen(node) {
278
+ if (this.parser) {
279
+ this.parser.parseOpen(node);
280
+ return true;
281
+ }
282
+ switch (node.name) {
283
+ case 'c':
284
+ // const address = colCache.decodeAddress(node.attributes.r);
285
+ this.model = {
286
+ address: node.attributes.r,
287
+ };
288
+ this.t = node.attributes.t;
289
+ if (node.attributes.s) {
290
+ this.model.styleId = parseInt(node.attributes.s, 10);
291
+ }
292
+ return true;
293
+
294
+ case 'f':
295
+ this.currentNode = 'f';
296
+ this.model.si = node.attributes.si;
297
+ this.model.shareType = node.attributes.t;
298
+ this.model.ref = node.attributes.ref;
299
+ return true;
300
+
301
+ case 'v':
302
+ this.currentNode = 'v';
303
+ return true;
304
+
305
+ case 't':
306
+ this.currentNode = 't';
307
+ return true;
308
+
309
+ case 'r':
310
+ this.parser = this.richTextXForm;
311
+ this.parser.parseOpen(node);
312
+ return true;
313
+
314
+ default:
315
+ return false;
316
+ }
317
+ }
318
+
319
+ parseText(text) {
320
+ if (this.parser) {
321
+ this.parser.parseText(text);
322
+ return;
323
+ }
324
+ switch (this.currentNode) {
325
+ case 'f':
326
+ this.model.formula = this.model.formula ? this.model.formula + text : text;
327
+ break;
328
+ case 'v':
329
+ case 't':
330
+ if (this.model.value && this.model.value.richText) {
331
+ this.model.value.richText.text = this.model.value.richText.text
332
+ ? this.model.value.richText.text + text
333
+ : text;
334
+ } else {
335
+ this.model.value = this.model.value ? this.model.value + text : text;
336
+ }
337
+ break;
338
+ default:
339
+ break;
340
+ }
341
+ }
342
+
343
+ parseClose(name) {
344
+ switch (name) {
345
+ case 'c': {
346
+ const {model} = this;
347
+
348
+ // first guess on cell type
349
+ if (model.formula || model.shareType) {
350
+ model.type = Enums.ValueType.Formula;
351
+ if (model.value) {
352
+ if (this.t === 'str') {
353
+ model.result = utils.xmlDecode(model.value);
354
+ } else if (this.t === 'b') {
355
+ model.result = parseInt(model.value, 10) !== 0;
356
+ } else if (this.t === 'e') {
357
+ model.result = {error: model.value};
358
+ } else {
359
+ model.result = parseFloat(model.value);
360
+ }
361
+ model.value = undefined;
362
+ }
363
+ } else if (model.value !== undefined) {
364
+ switch (this.t) {
365
+ case 's':
366
+ model.type = Enums.ValueType.String;
367
+ model.value = parseInt(model.value, 10);
368
+ break;
369
+ case 'str':
370
+ model.type = Enums.ValueType.String;
371
+ model.value = utils.xmlDecode(model.value);
372
+ break;
373
+ case 'inlineStr':
374
+ model.type = Enums.ValueType.String;
375
+ break;
376
+ case 'b':
377
+ model.type = Enums.ValueType.Boolean;
378
+ model.value = parseInt(model.value, 10) !== 0;
379
+ break;
380
+ case 'e':
381
+ model.type = Enums.ValueType.Error;
382
+ model.value = {error: model.value};
383
+ break;
384
+ default:
385
+ model.type = Enums.ValueType.Number;
386
+ model.value = parseFloat(model.value);
387
+ break;
388
+ }
389
+ } else if (model.styleId) {
390
+ model.type = Enums.ValueType.Null;
391
+ } else {
392
+ model.type = Enums.ValueType.Merge;
393
+ }
394
+ return false;
395
+ }
396
+
397
+ case 'f':
398
+ case 'v':
399
+ case 'is':
400
+ this.currentNode = undefined;
401
+ return true;
402
+
403
+ case 't':
404
+ if (this.parser) {
405
+ this.parser.parseClose(name);
406
+ return true;
407
+ }
408
+ this.currentNode = undefined;
409
+ return true;
410
+
411
+ case 'r':
412
+ this.model.value = this.model.value || {};
413
+ this.model.value.richText = this.model.value.richText || [];
414
+ this.model.value.richText.push(this.parser.model);
415
+ this.parser = undefined;
416
+ this.currentNode = undefined;
417
+ return true;
418
+
419
+ default:
420
+ if (this.parser) {
421
+ this.parser.parseClose(name);
422
+ return true;
423
+ }
424
+ return false;
425
+ }
426
+ }
427
+
428
+ reconcile(model, options) {
429
+ const style = model.styleId && options.styles && options.styles.getStyleModel(model.styleId);
430
+ if (style) {
431
+ model.style = style;
432
+ }
433
+ if (model.styleId !== undefined) {
434
+ model.styleId = undefined;
435
+ }
436
+
437
+ switch (model.type) {
438
+ case Enums.ValueType.String:
439
+ if (typeof model.value === 'number') {
440
+ if (options.sharedStrings) {
441
+ model.value = options.sharedStrings.getString(model.value);
442
+ }
443
+ }
444
+ if (model.value.richText) {
445
+ model.type = Enums.ValueType.RichText;
446
+ }
447
+ break;
448
+
449
+ case Enums.ValueType.Number:
450
+ if (style && utils.isDateFmt(style.numFmt)) {
451
+ model.type = Enums.ValueType.Date;
452
+ model.value = utils.excelToDate(model.value, options.date1904);
453
+ }
454
+ break;
455
+
456
+ case Enums.ValueType.Formula:
457
+ if (model.result !== undefined && style && utils.isDateFmt(style.numFmt)) {
458
+ model.result = utils.excelToDate(model.result, options.date1904);
459
+ }
460
+ if (model.shareType === 'shared') {
461
+ if (model.ref) {
462
+ // master
463
+ options.formulae[model.si] = model.address;
464
+ } else {
465
+ // slave
466
+ model.sharedFormula = options.formulae[model.si];
467
+ delete model.shareType;
468
+ }
469
+ delete model.si;
470
+ }
471
+ break;
472
+
473
+ default:
474
+ break;
475
+ }
476
+
477
+ // look for hyperlink
478
+ const hyperlink = options.hyperlinkMap[model.address];
479
+ if (hyperlink) {
480
+ if (model.type === Enums.ValueType.Formula) {
481
+ model.text = model.result;
482
+ model.result = undefined;
483
+ } else {
484
+ model.text = model.value;
485
+ model.value = undefined;
486
+ }
487
+ model.type = Enums.ValueType.Hyperlink;
488
+ model.hyperlink = hyperlink;
489
+ }
490
+
491
+ const comment = options.commentsMap && options.commentsMap[model.address];
492
+ if (comment) {
493
+ model.comment = comment;
494
+ }
495
+ }
496
+ }
497
+
498
+ module.exports = CellXform;