@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,918 +0,0 @@
1
- "use strict";
2
-
3
- const _ = require('../utils/under-dash');
4
- const colCache = require('../utils/col-cache');
5
- const Range = require('./range');
6
- const Row = require('./row');
7
- const Column = require('./column');
8
- const Enums = require('./enums');
9
- const Image = require('./image');
10
- const Table = require('./table');
11
- const DataValidations = require('./data-validations');
12
- const {
13
- makePivotTable
14
- } = require('./pivot-table');
15
- const Encryptor = require('../utils/encryptor');
16
- const {
17
- copyStyle
18
- } = require('../utils/copy-style');
19
-
20
- // Worksheet requirements
21
- // Operate as sheet inside workbook or standalone
22
- // Load and Save from file and stream
23
- // Access/Add/Delete individual cells
24
- // Manage column widths and row heights
25
-
26
- class Worksheet {
27
- constructor(options) {
28
- options = options || {};
29
- this._workbook = options.workbook;
30
-
31
- // in a workbook, each sheet will have a number
32
- this.id = options.id;
33
- this.orderNo = options.orderNo;
34
-
35
- // and a name
36
- this.name = options.name;
37
-
38
- // add a state
39
- this.state = options.state || 'visible';
40
-
41
- // rows allows access organised by row. Sparse array of arrays indexed by row-1, col
42
- // Note: _rows is zero based. Must subtract 1 to go from cell.row to index
43
- this._rows = [];
44
-
45
- // column definitions
46
- this._columns = null;
47
-
48
- // column keys (addRow convenience): key ==> this._collumns index
49
- this._keys = {};
50
-
51
- // keep record of all merges
52
- this._merges = {};
53
-
54
- // record of all row and column pageBreaks
55
- this.rowBreaks = [];
56
-
57
- // for tabColor, default row height, outline levels, etc
58
- this.properties = Object.assign({}, {
59
- defaultRowHeight: 15,
60
- dyDescent: 55,
61
- outlineLevelCol: 0,
62
- outlineLevelRow: 0
63
- }, options.properties);
64
-
65
- // for all things printing
66
- this.pageSetup = Object.assign({}, {
67
- margins: {
68
- left: 0.7,
69
- right: 0.7,
70
- top: 0.75,
71
- bottom: 0.75,
72
- header: 0.3,
73
- footer: 0.3
74
- },
75
- orientation: 'portrait',
76
- horizontalDpi: 4294967295,
77
- verticalDpi: 4294967295,
78
- fitToPage: !!(options.pageSetup && (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) && !options.pageSetup.scale),
79
- pageOrder: 'downThenOver',
80
- blackAndWhite: false,
81
- draft: false,
82
- cellComments: 'None',
83
- errors: 'displayed',
84
- scale: 100,
85
- fitToWidth: 1,
86
- fitToHeight: 1,
87
- paperSize: undefined,
88
- showRowColHeaders: false,
89
- showGridLines: false,
90
- firstPageNumber: undefined,
91
- horizontalCentered: false,
92
- verticalCentered: false,
93
- rowBreaks: null,
94
- colBreaks: null
95
- }, options.pageSetup);
96
- this.headerFooter = Object.assign({}, {
97
- differentFirst: false,
98
- differentOddEven: false,
99
- oddHeader: null,
100
- oddFooter: null,
101
- evenHeader: null,
102
- evenFooter: null,
103
- firstHeader: null,
104
- firstFooter: null
105
- }, options.headerFooter);
106
- this.dataValidations = new DataValidations();
107
-
108
- // for freezepanes, split, zoom, gridlines, etc
109
- this.views = options.views || [];
110
- this.autoFilter = options.autoFilter || null;
111
-
112
- // for images, etc
113
- this._media = [];
114
-
115
- // worksheet protection
116
- this.sheetProtection = null;
117
-
118
- // for tables
119
- this.tables = {};
120
- this.pivotTables = [];
121
- this.conditionalFormattings = [];
122
- }
123
- get name() {
124
- return this._name;
125
- }
126
- set name(name) {
127
- if (name === undefined) {
128
- name = `sheet${this.id}`;
129
- }
130
- if (this._name === name) return;
131
- if (typeof name !== 'string') {
132
- throw new Error('The name has to be a string.');
133
- }
134
- if (name === '') {
135
- throw new Error('The name can\'t be empty.');
136
- }
137
- if (name === 'History') {
138
- throw new Error('The name "History" is protected. Please use a different name.');
139
- }
140
-
141
- // Illegal character in worksheet name: asterisk (*), question mark (?),
142
- // colon (:), forward slash (/ \), or bracket ([])
143
- if (/[*?:/\\[\]]/.test(name)) {
144
- throw new Error(`Worksheet name ${name} cannot include any of the following characters: * ? : \\ / [ ]`);
145
- }
146
- if (/(^')|('$)/.test(name)) {
147
- throw new Error(`The first or last character of worksheet name cannot be a single quotation mark: ${name}`);
148
- }
149
- if (name && name.length > 31) {
150
- // eslint-disable-next-line no-console
151
- console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`);
152
- name = name.substring(0, 31);
153
- }
154
- if (this._workbook._worksheets.find(ws => ws && ws.name.toLowerCase() === name.toLowerCase())) {
155
- throw new Error(`Worksheet name already exists: ${name}`);
156
- }
157
- this._name = name;
158
- }
159
- get workbook() {
160
- return this._workbook;
161
- }
162
-
163
- // when you're done with this worksheet, call this to remove from workbook
164
- destroy() {
165
- this._workbook.removeWorksheetEx(this);
166
- }
167
-
168
- // Get the bounding range of the cells in this worksheet
169
- get dimensions() {
170
- const dimensions = new Range();
171
- this._rows.forEach(row => {
172
- if (row) {
173
- const rowDims = row.dimensions;
174
- if (rowDims) {
175
- dimensions.expand(row.number, rowDims.min, row.number, rowDims.max);
176
- }
177
- }
178
- });
179
- return dimensions;
180
- }
181
-
182
- // =========================================================================
183
- // Columns
184
-
185
- // get the current columns array.
186
- get columns() {
187
- return this._columns;
188
- }
189
-
190
- // set the columns from an array of column definitions.
191
- // Note: any headers defined will overwrite existing values.
192
- set columns(value) {
193
- // calculate max header row count
194
- this._headerRowCount = value.reduce((pv, cv) => {
195
- const headerCount = cv.header && 1 || cv.headers && cv.headers.length || 0;
196
- return Math.max(pv, headerCount);
197
- }, 0);
198
-
199
- // construct Column objects
200
- let count = 1;
201
- const columns = this._columns = [];
202
- value.forEach(defn => {
203
- const column = new Column(this, count++, false);
204
- columns.push(column);
205
- column.defn = defn;
206
- });
207
- }
208
- getColumnKey(key) {
209
- return this._keys[key];
210
- }
211
- setColumnKey(key, value) {
212
- this._keys[key] = value;
213
- }
214
- deleteColumnKey(key) {
215
- delete this._keys[key];
216
- }
217
- eachColumnKey(f) {
218
- _.each(this._keys, f);
219
- }
220
-
221
- // get a single column by col number. If it doesn't exist, create it and any gaps before it
222
- getColumn(c) {
223
- if (typeof c === 'string') {
224
- // if it matches a key'd column, return that
225
- const col = this._keys[c];
226
- if (col) return col;
227
-
228
- // otherwise, assume letter
229
- c = colCache.l2n(c);
230
- }
231
- if (!this._columns) {
232
- this._columns = [];
233
- }
234
- if (c > this._columns.length) {
235
- let n = this._columns.length + 1;
236
- while (n <= c) {
237
- this._columns.push(new Column(this, n++));
238
- }
239
- }
240
- return this._columns[c - 1];
241
- }
242
- spliceColumns(start, count) {
243
- const rows = this._rows;
244
- const nRows = rows.length;
245
- for (var _len = arguments.length, inserts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
246
- inserts[_key - 2] = arguments[_key];
247
- }
248
- if (inserts.length > 0) {
249
- // must iterate over all rows whether they exist yet or not
250
- for (let i = 0; i < nRows; i++) {
251
- const rowArguments = [start, count];
252
- // eslint-disable-next-line no-loop-func
253
- inserts.forEach(insert => {
254
- rowArguments.push(insert[i] || null);
255
- });
256
- const row = this.getRow(i + 1);
257
- // eslint-disable-next-line prefer-spread
258
- row.splice.apply(row, rowArguments);
259
- }
260
- } else {
261
- // nothing to insert, so just splice all rows
262
- this._rows.forEach(r => {
263
- if (r) {
264
- r.splice(start, count);
265
- }
266
- });
267
- }
268
-
269
- // splice column definitions
270
- const nExpand = inserts.length - count;
271
- const nKeep = start + count;
272
- const nEnd = this._columns.length;
273
- if (nExpand < 0) {
274
- for (let i = start + inserts.length; i <= nEnd; i++) {
275
- this.getColumn(i).defn = this.getColumn(i - nExpand).defn;
276
- }
277
- } else if (nExpand > 0) {
278
- for (let i = nEnd; i >= nKeep; i--) {
279
- this.getColumn(i + nExpand).defn = this.getColumn(i).defn;
280
- }
281
- }
282
- for (let i = start; i < start + inserts.length; i++) {
283
- this.getColumn(i).defn = null;
284
- }
285
-
286
- // account for defined names
287
- this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);
288
- }
289
- get lastColumn() {
290
- return this.getColumn(this.columnCount);
291
- }
292
- get columnCount() {
293
- let maxCount = 0;
294
- this.eachRow(row => {
295
- maxCount = Math.max(maxCount, row.cellCount);
296
- });
297
- return maxCount;
298
- }
299
- get actualColumnCount() {
300
- // performance nightmare - for each row, counts all the columns used
301
- const counts = [];
302
- let count = 0;
303
- this.eachRow(row => {
304
- row.eachCell(_ref => {
305
- let {
306
- col
307
- } = _ref;
308
- if (!counts[col]) {
309
- counts[col] = true;
310
- count++;
311
- }
312
- });
313
- });
314
- return count;
315
- }
316
-
317
- // =========================================================================
318
- // Rows
319
-
320
- _commitRow() {
321
- // nop - allows streaming reader to fill a document
322
- }
323
- get _lastRowNumber() {
324
- // need to cope with results of splice
325
- const rows = this._rows;
326
- let n = rows.length;
327
- while (n > 0 && rows[n - 1] === undefined) {
328
- n--;
329
- }
330
- return n;
331
- }
332
- get _nextRow() {
333
- return this._lastRowNumber + 1;
334
- }
335
- get lastRow() {
336
- if (this._rows.length) {
337
- return this._rows[this._rows.length - 1];
338
- }
339
- return undefined;
340
- }
341
-
342
- // find a row (if exists) by row number
343
- findRow(r) {
344
- return this._rows[r - 1];
345
- }
346
-
347
- // find multiple rows (if exists) by row number
348
- findRows(start, length) {
349
- return this._rows.slice(start - 1, start - 1 + length);
350
- }
351
- get rowCount() {
352
- return this._lastRowNumber;
353
- }
354
- get actualRowCount() {
355
- // counts actual rows that have actual data
356
- let count = 0;
357
- this.eachRow(() => {
358
- count++;
359
- });
360
- return count;
361
- }
362
-
363
- // get a row by row number.
364
- getRow(r) {
365
- let row = this._rows[r - 1];
366
- if (!row) {
367
- row = this._rows[r - 1] = new Row(this, r);
368
- }
369
- return row;
370
- }
371
-
372
- // get multiple rows by row number.
373
- getRows(start, length) {
374
- if (length < 1) return undefined;
375
- const rows = [];
376
- for (let i = start; i < start + length; i++) {
377
- rows.push(this.getRow(i));
378
- }
379
- return rows;
380
- }
381
- addRow(value) {
382
- let style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n';
383
- const rowNo = this._nextRow;
384
- const row = this.getRow(rowNo);
385
- row.values = value;
386
- this._setStyleOption(rowNo, style[0] === 'i' ? style : 'n');
387
- return row;
388
- }
389
- addRows(value) {
390
- let style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n';
391
- const rows = [];
392
- value.forEach(row => {
393
- rows.push(this.addRow(row, style));
394
- });
395
- return rows;
396
- }
397
- insertRow(pos, value) {
398
- let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'n';
399
- this.spliceRows(pos, 0, value);
400
- this._setStyleOption(pos, style);
401
- return this.getRow(pos);
402
- }
403
- insertRows(pos, values) {
404
- let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'n';
405
- this.spliceRows(pos, 0, ...values);
406
- if (style !== 'n') {
407
- // copy over the styles
408
- for (let i = 0; i < values.length; i++) {
409
- if (style[0] === 'o' && this.findRow(values.length + pos + i) !== undefined) {
410
- this._copyStyle(values.length + pos + i, pos + i, style[1] === '+');
411
- } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {
412
- this._copyStyle(pos - 1, pos + i, style[1] === '+');
413
- }
414
- }
415
- }
416
- return this.getRows(pos, values.length);
417
- }
418
-
419
- // set row at position to same style as of either pervious row (option 'i') or next row (option 'o')
420
- _setStyleOption(pos) {
421
- let style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n';
422
- if (style[0] === 'o' && this.findRow(pos + 1) !== undefined) {
423
- this._copyStyle(pos + 1, pos, style[1] === '+');
424
- } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {
425
- this._copyStyle(pos - 1, pos, style[1] === '+');
426
- }
427
- }
428
- _copyStyle(src, dest) {
429
- let styleEmpty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
430
- const rSrc = this.getRow(src);
431
- const rDst = this.getRow(dest);
432
- rDst.style = copyStyle(rSrc.style);
433
- // eslint-disable-next-line no-loop-func
434
- rSrc.eachCell({
435
- includeEmpty: styleEmpty
436
- }, (cell, colNumber) => {
437
- rDst.getCell(colNumber).style = copyStyle(cell.style);
438
- });
439
- rDst.height = rSrc.height;
440
- }
441
- duplicateRow(rowNum, count) {
442
- let insert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
443
- // create count duplicates of rowNum
444
- // either inserting new or overwriting existing rows
445
-
446
- const rSrc = this._rows[rowNum - 1];
447
- const inserts = new Array(count).fill(rSrc.values);
448
- this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);
449
-
450
- // now copy styles...
451
- for (let i = 0; i < count; i++) {
452
- const rDst = this._rows[rowNum + i];
453
- rDst.style = rSrc.style;
454
- rDst.height = rSrc.height;
455
- // eslint-disable-next-line no-loop-func
456
- rSrc.eachCell({
457
- includeEmpty: true
458
- }, (cell, colNumber) => {
459
- rDst.getCell(colNumber).style = cell.style;
460
- });
461
- }
462
- }
463
- spliceRows(start, count) {
464
- // same problem as row.splice, except worse.
465
- const nKeep = start + count;
466
- for (var _len2 = arguments.length, inserts = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
467
- inserts[_key2 - 2] = arguments[_key2];
468
- }
469
- const nInserts = inserts.length;
470
- const nExpand = nInserts - count;
471
- const nEnd = this._rows.length;
472
- let i;
473
- let rSrc;
474
- if (nExpand < 0) {
475
- // remove rows
476
- if (start === nEnd) {
477
- this._rows[nEnd - 1] = undefined;
478
- }
479
- for (i = nKeep; i <= nEnd; i++) {
480
- rSrc = this._rows[i - 1];
481
- if (rSrc) {
482
- const rDst = this.getRow(i + nExpand);
483
- rDst.values = rSrc.values;
484
- rDst.style = rSrc.style;
485
- rDst.height = rSrc.height;
486
- // eslint-disable-next-line no-loop-func
487
- rSrc.eachCell({
488
- includeEmpty: true
489
- }, (cell, colNumber) => {
490
- rDst.getCell(colNumber).style = cell.style;
491
- });
492
- this._rows[i - 1] = undefined;
493
- } else {
494
- this._rows[i + nExpand - 1] = undefined;
495
- }
496
- }
497
- } else if (nExpand > 0) {
498
- // insert new cells
499
- for (i = nEnd; i >= nKeep; i--) {
500
- rSrc = this._rows[i - 1];
501
- if (rSrc) {
502
- const rDst = this.getRow(i + nExpand);
503
- rDst.values = rSrc.values;
504
- rDst.style = rSrc.style;
505
- rDst.height = rSrc.height;
506
- // eslint-disable-next-line no-loop-func
507
- rSrc.eachCell({
508
- includeEmpty: true
509
- }, (cell, colNumber) => {
510
- rDst.getCell(colNumber).style = cell.style;
511
-
512
- // remerge cells accounting for insert offset
513
- if (cell._value.constructor.name === 'MergeValue') {
514
- const cellToBeMerged = this.getRow(cell._row._number + nInserts).getCell(colNumber);
515
- const prevMaster = cell._value._master;
516
- const newMaster = this.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number);
517
- cellToBeMerged.merge(newMaster);
518
- }
519
- });
520
- } else {
521
- this._rows[i + nExpand - 1] = undefined;
522
- }
523
- }
524
- }
525
-
526
- // now copy over the new values
527
- for (i = 0; i < nInserts; i++) {
528
- const rDst = this.getRow(start + i);
529
- rDst.style = {};
530
- rDst.values = inserts[i];
531
- }
532
-
533
- // account for defined names
534
- this.workbook.definedNames.spliceRows(this.name, start, count, nInserts);
535
- }
536
-
537
- // iterate over every row in the worksheet, including maybe empty rows
538
- eachRow(options, iteratee) {
539
- if (!iteratee) {
540
- iteratee = options;
541
- options = undefined;
542
- }
543
- if (options && options.includeEmpty) {
544
- const n = this._rows.length;
545
- for (let i = 1; i <= n; i++) {
546
- iteratee(this.getRow(i), i);
547
- }
548
- } else {
549
- this._rows.forEach(row => {
550
- if (row && row.hasValues) {
551
- iteratee(row, row.number);
552
- }
553
- });
554
- }
555
- }
556
-
557
- // return all rows as sparse array
558
- getSheetValues() {
559
- const rows = [];
560
- this._rows.forEach(row => {
561
- if (row) {
562
- rows[row.number] = row.values;
563
- }
564
- });
565
- return rows;
566
- }
567
-
568
- // =========================================================================
569
- // Cells
570
-
571
- // returns the cell at [r,c] or address given by r. If not found, return undefined
572
- findCell(r, c) {
573
- const address = colCache.getAddress(r, c);
574
- const row = this._rows[address.row - 1];
575
- return row ? row.findCell(address.col) : undefined;
576
- }
577
-
578
- // return the cell at [r,c] or address given by r. If not found, create a new one.
579
- getCell(r, c) {
580
- const address = colCache.getAddress(r, c);
581
- const row = this.getRow(address.row);
582
- return row.getCellEx(address);
583
- }
584
-
585
- // =========================================================================
586
- // Merge
587
-
588
- // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell
589
- mergeCells() {
590
- for (var _len3 = arguments.length, cells = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
591
- cells[_key3] = arguments[_key3];
592
- }
593
- const dimensions = new Range(cells);
594
- this._mergeCellsInternal(dimensions);
595
- }
596
- mergeCellsWithoutStyle() {
597
- for (var _len4 = arguments.length, cells = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
598
- cells[_key4] = arguments[_key4];
599
- }
600
- const dimensions = new Range(cells);
601
- this._mergeCellsInternal(dimensions, true);
602
- }
603
- _mergeCellsInternal(dimensions, ignoreStyle) {
604
- // check cells aren't already merged
605
- _.each(this._merges, merge => {
606
- if (merge.intersects(dimensions)) {
607
- throw new Error('Cannot merge already merged cells');
608
- }
609
- });
610
-
611
- // apply merge
612
- const master = this.getCell(dimensions.top, dimensions.left);
613
- for (let i = dimensions.top; i <= dimensions.bottom; i++) {
614
- for (let j = dimensions.left; j <= dimensions.right; j++) {
615
- // merge all but the master cell
616
- if (i > dimensions.top || j > dimensions.left) {
617
- this.getCell(i, j).merge(master, ignoreStyle);
618
- }
619
- }
620
- }
621
-
622
- // index merge
623
- this._merges[master.address] = dimensions;
624
- }
625
- _unMergeMaster(master) {
626
- // master is always top left of a rectangle
627
- const merge = this._merges[master.address];
628
- if (merge) {
629
- for (let i = merge.top; i <= merge.bottom; i++) {
630
- for (let j = merge.left; j <= merge.right; j++) {
631
- this.getCell(i, j).unmerge();
632
- }
633
- }
634
- delete this._merges[master.address];
635
- }
636
- }
637
- get hasMerges() {
638
- // return true if this._merges has a merge object
639
- return _.some(this._merges, Boolean);
640
- }
641
-
642
- // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge,
643
- // un-merge the group. Note this function can affect multiple merges and merge-blocks are
644
- // atomic - either they're all merged or all un-merged.
645
- unMergeCells() {
646
- for (var _len5 = arguments.length, cells = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
647
- cells[_key5] = arguments[_key5];
648
- }
649
- const dimensions = new Range(cells);
650
-
651
- // find any cells in that range and unmerge them
652
- for (let i = dimensions.top; i <= dimensions.bottom; i++) {
653
- for (let j = dimensions.left; j <= dimensions.right; j++) {
654
- const cell = this.findCell(i, j);
655
- if (cell) {
656
- if (cell.type === Enums.ValueType.Merge) {
657
- // this cell merges to another master
658
- this._unMergeMaster(cell.master);
659
- } else if (this._merges[cell.address]) {
660
- // this cell is a master
661
- this._unMergeMaster(cell);
662
- }
663
- }
664
- }
665
- }
666
- }
667
-
668
- // ===========================================================================
669
- // Shared/Array Formula
670
- fillFormula(range, formula, results) {
671
- let shareType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'shared';
672
- // Define formula for top-left cell and share to rest
673
- const decoded = colCache.decode(range);
674
- const {
675
- top,
676
- left,
677
- bottom,
678
- right
679
- } = decoded;
680
- const width = right - left + 1;
681
- const masterAddress = colCache.encodeAddress(top, left);
682
- const isShared = shareType === 'shared';
683
-
684
- // work out result accessor
685
- let getResult;
686
- if (typeof results === 'function') {
687
- getResult = results;
688
- } else if (Array.isArray(results)) {
689
- if (Array.isArray(results[0])) {
690
- getResult = (row, col) => results[row - top][col - left];
691
- } else {
692
- // eslint-disable-next-line no-mixed-operators
693
- getResult = (row, col) => results[(row - top) * width + (col - left)];
694
- }
695
- } else {
696
- getResult = () => undefined;
697
- }
698
- let first = true;
699
- for (let r = top; r <= bottom; r++) {
700
- for (let c = left; c <= right; c++) {
701
- if (first) {
702
- this.getCell(r, c).value = {
703
- shareType,
704
- formula,
705
- ref: range,
706
- result: getResult(r, c)
707
- };
708
- first = false;
709
- } else {
710
- this.getCell(r, c).value = isShared ? {
711
- sharedFormula: masterAddress,
712
- result: getResult(r, c)
713
- } : getResult(r, c);
714
- }
715
- }
716
- }
717
- }
718
-
719
- // =========================================================================
720
- // Images
721
- addImage(imageId, range) {
722
- const model = {
723
- type: 'image',
724
- imageId,
725
- range
726
- };
727
- this._media.push(new Image(this, model));
728
- }
729
- getImages() {
730
- return this._media.filter(m => m.type === 'image');
731
- }
732
- addBackgroundImage(imageId) {
733
- const model = {
734
- type: 'background',
735
- imageId
736
- };
737
- this._media.push(new Image(this, model));
738
- }
739
- getBackgroundImageId() {
740
- const image = this._media.find(m => m.type === 'background');
741
- return image && image.imageId;
742
- }
743
-
744
- // =========================================================================
745
- // Worksheet Protection
746
- protect(password, options) {
747
- // TODO: make this function truly async
748
- // perhaps marshal to worker thread or something
749
- return new Promise(resolve => {
750
- this.sheetProtection = {
751
- sheet: true
752
- };
753
- if (options && 'spinCount' in options) {
754
- // force spinCount to be integer >= 0
755
- options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000;
756
- }
757
- if (password) {
758
- this.sheetProtection.algorithmName = 'SHA-512';
759
- this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64');
760
- this.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount
761
- this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(password, 'SHA512', this.sheetProtection.saltValue, this.sheetProtection.spinCount);
762
- }
763
- if (options) {
764
- this.sheetProtection = Object.assign(this.sheetProtection, options);
765
- if (!password && 'spinCount' in options) {
766
- delete this.sheetProtection.spinCount;
767
- }
768
- }
769
- resolve();
770
- });
771
- }
772
- unprotect() {
773
- this.sheetProtection = null;
774
- }
775
-
776
- // =========================================================================
777
- // Tables
778
- addTable(model) {
779
- const table = new Table(this, model);
780
- this.tables[model.name] = table;
781
- return table;
782
- }
783
- getTable(name) {
784
- return this.tables[name];
785
- }
786
- removeTable(name) {
787
- delete this.tables[name];
788
- }
789
- getTables() {
790
- return Object.values(this.tables);
791
- }
792
-
793
- // =========================================================================
794
- // Pivot Tables
795
- addPivotTable(model) {
796
- // eslint-disable-next-line no-console
797
- console.warn(`Warning: Pivot Table support is experimental.
798
- Please leave feedback at https://github.com/exceljs/exceljs/discussions/2575`);
799
- const pivotTable = makePivotTable(this, model);
800
- this.pivotTables.push(pivotTable);
801
- this.workbook.pivotTables.push(pivotTable);
802
- return pivotTable;
803
- }
804
-
805
- // ===========================================================================
806
- // Conditional Formatting
807
- addConditionalFormatting(cf) {
808
- this.conditionalFormattings.push(cf);
809
- }
810
- removeConditionalFormatting(filter) {
811
- if (typeof filter === 'number') {
812
- this.conditionalFormattings.splice(filter, 1);
813
- } else if (filter instanceof Function) {
814
- this.conditionalFormattings = this.conditionalFormattings.filter(filter);
815
- } else {
816
- this.conditionalFormattings = [];
817
- }
818
- }
819
-
820
- // ===========================================================================
821
- // Deprecated
822
- get tabColor() {
823
- // eslint-disable-next-line no-console
824
- console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');
825
- return this.properties.tabColor;
826
- }
827
- set tabColor(value) {
828
- // eslint-disable-next-line no-console
829
- console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');
830
- this.properties.tabColor = value;
831
- }
832
-
833
- // ===========================================================================
834
- // Model
835
-
836
- get model() {
837
- const model = {
838
- id: this.id,
839
- name: this.name,
840
- dataValidations: this.dataValidations.model,
841
- properties: this.properties,
842
- state: this.state,
843
- pageSetup: this.pageSetup,
844
- headerFooter: this.headerFooter,
845
- rowBreaks: this.rowBreaks,
846
- views: this.views,
847
- autoFilter: this.autoFilter,
848
- media: this._media.map(medium => medium.model),
849
- sheetProtection: this.sheetProtection,
850
- tables: Object.values(this.tables).map(table => table.model),
851
- pivotTables: this.pivotTables,
852
- conditionalFormattings: this.conditionalFormattings
853
- };
854
-
855
- // =================================================
856
- // columns
857
- model.cols = Column.toModel(this.columns);
858
-
859
- // ==========================================================
860
- // Rows
861
- const rows = model.rows = [];
862
- const dimensions = model.dimensions = new Range();
863
- this._rows.forEach(row => {
864
- const rowModel = row && row.model;
865
- if (rowModel) {
866
- dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max);
867
- rows.push(rowModel);
868
- }
869
- });
870
-
871
- // ==========================================================
872
- // Merges
873
- model.merges = [];
874
- _.each(this._merges, merge => {
875
- model.merges.push(merge.range);
876
- });
877
- return model;
878
- }
879
- _parseRows(model) {
880
- this._rows = [];
881
- model.rows.forEach(rowModel => {
882
- const row = new Row(this, rowModel.number);
883
- this._rows[row.number - 1] = row;
884
- row.model = rowModel;
885
- });
886
- }
887
- _parseMergeCells(model) {
888
- _.each(model.mergeCells, merge => {
889
- // Do not merge styles when importing an Excel file
890
- // since each cell may have different styles intentionally.
891
- this.mergeCellsWithoutStyle(merge);
892
- });
893
- }
894
- set model(value) {
895
- this.name = value.name;
896
- this._columns = Column.fromModel(this, value.cols);
897
- this._parseRows(value);
898
- this._parseMergeCells(value);
899
- this.dataValidations = new DataValidations(value.dataValidations);
900
- this.properties = value.properties;
901
- this.pageSetup = value.pageSetup;
902
- this.headerFooter = value.headerFooter;
903
- this.views = value.views;
904
- this.autoFilter = value.autoFilter;
905
- this._media = value.media.map(medium => new Image(this, medium));
906
- this.sheetProtection = value.sheetProtection;
907
- this.tables = value.tables.reduce((tables, table) => {
908
- const t = new Table();
909
- t.model = table;
910
- tables[table.name] = t;
911
- return tables;
912
- }, {});
913
- this.pivotTables = value.pivotTables;
914
- this.conditionalFormattings = value.conditionalFormattings;
915
- }
916
- }
917
- module.exports = Worksheet;
918
- //# sourceMappingURL=worksheet.js.map