@yuanliwei/exceljs 4.4.0 → 4.4.1

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 (354) hide show
  1. package/dist/LICENSE +22 -0
  2. package/dist/es5/csv/csv.js +176 -0
  3. package/dist/es5/csv/csv.js.map +1 -0
  4. package/dist/es5/csv/line-buffer.js +67 -0
  5. package/dist/es5/csv/line-buffer.js.map +1 -0
  6. package/dist/es5/csv/stream-converter.js +110 -0
  7. package/dist/es5/csv/stream-converter.js.map +1 -0
  8. package/dist/es5/doc/anchor.js +73 -0
  9. package/dist/es5/doc/anchor.js.map +1 -0
  10. package/dist/es5/doc/cell.js +951 -0
  11. package/dist/es5/doc/cell.js.map +1 -0
  12. package/dist/es5/doc/column.js +274 -0
  13. package/dist/es5/doc/column.js.map +1 -0
  14. package/dist/es5/doc/data-validations.js +18 -0
  15. package/dist/es5/doc/data-validations.js.map +1 -0
  16. package/dist/es5/doc/defined-names.js +171 -0
  17. package/dist/es5/doc/defined-names.js.map +1 -0
  18. package/dist/es5/doc/enums.js +49 -0
  19. package/dist/es5/doc/enums.js.map +1 -0
  20. package/dist/es5/doc/image.js +67 -0
  21. package/dist/es5/doc/image.js.map +1 -0
  22. package/dist/es5/doc/modelcontainer.js +16 -0
  23. package/dist/es5/doc/modelcontainer.js.map +1 -0
  24. package/dist/es5/doc/note.js +60 -0
  25. package/dist/es5/doc/note.js.map +1 -0
  26. package/dist/es5/doc/pivot-table.js +132 -0
  27. package/dist/es5/doc/pivot-table.js.map +1 -0
  28. package/dist/es5/doc/range.js +225 -0
  29. package/dist/es5/doc/range.js.map +1 -0
  30. package/dist/es5/doc/row.js +381 -0
  31. package/dist/es5/doc/row.js.map +1 -0
  32. package/dist/es5/doc/table.js +428 -0
  33. package/dist/es5/doc/table.js.map +1 -0
  34. package/dist/es5/doc/workbook.js +203 -0
  35. package/dist/es5/doc/workbook.js.map +1 -0
  36. package/dist/es5/doc/worksheet.js +911 -0
  37. package/dist/es5/doc/worksheet.js.map +1 -0
  38. package/dist/es5/exceljs.bare.js +14 -0
  39. package/dist/es5/exceljs.bare.js.map +1 -0
  40. package/dist/es5/exceljs.browser.js +36 -0
  41. package/dist/es5/exceljs.browser.js.map +1 -0
  42. package/dist/es5/exceljs.nodejs.js +15 -0
  43. package/dist/es5/exceljs.nodejs.js.map +1 -0
  44. package/dist/es5/index.js +15 -0
  45. package/dist/es5/stream/xlsx/hyperlink-reader.js +107 -0
  46. package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -0
  47. package/dist/es5/stream/xlsx/sheet-comments-writer.js +94 -0
  48. package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -0
  49. package/dist/es5/stream/xlsx/sheet-rels-writer.js +93 -0
  50. package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -0
  51. package/dist/es5/stream/xlsx/workbook-reader.js +461 -0
  52. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -0
  53. package/dist/es5/stream/xlsx/workbook-writer.js +345 -0
  54. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -0
  55. package/dist/es5/stream/xlsx/worksheet-reader.js +459 -0
  56. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -0
  57. package/dist/es5/stream/xlsx/worksheet-writer.js +654 -0
  58. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -0
  59. package/dist/es5/utils/auto-drain.js +17 -0
  60. package/dist/es5/utils/auto-drain.js.map +1 -0
  61. package/dist/es5/utils/browser-buffer-decode.js +15 -0
  62. package/dist/es5/utils/browser-buffer-decode.js.map +1 -0
  63. package/dist/es5/utils/browser-buffer-encode.js +17 -0
  64. package/dist/es5/utils/browser-buffer-encode.js.map +1 -0
  65. package/dist/es5/utils/cell-matrix.js +145 -0
  66. package/dist/es5/utils/cell-matrix.js.map +1 -0
  67. package/dist/es5/utils/col-cache.js +274 -0
  68. package/dist/es5/utils/col-cache.js.map +1 -0
  69. package/dist/es5/utils/copy-style.js +41 -0
  70. package/dist/es5/utils/copy-style.js.map +1 -0
  71. package/dist/es5/utils/encryptor.js +58 -0
  72. package/dist/es5/utils/encryptor.js.map +1 -0
  73. package/dist/es5/utils/iterate-stream.js +57 -0
  74. package/dist/es5/utils/iterate-stream.js.map +1 -0
  75. package/dist/es5/utils/parse-sax.js +77 -0
  76. package/dist/es5/utils/parse-sax.js.map +1 -0
  77. package/dist/es5/utils/shared-formula.js +42 -0
  78. package/dist/es5/utils/shared-formula.js.map +1 -0
  79. package/dist/es5/utils/shared-strings.js +32 -0
  80. package/dist/es5/utils/shared-strings.js.map +1 -0
  81. package/dist/es5/utils/stream-base64.js +66 -0
  82. package/dist/es5/utils/stream-base64.js.map +1 -0
  83. package/dist/es5/utils/stream-buf.js +343 -0
  84. package/dist/es5/utils/stream-buf.js.map +1 -0
  85. package/dist/es5/utils/string-buf.js +73 -0
  86. package/dist/es5/utils/string-buf.js.map +1 -0
  87. package/dist/es5/utils/string-builder.js +32 -0
  88. package/dist/es5/utils/string-builder.js.map +1 -0
  89. package/dist/es5/utils/stuttered-pipe.js +61 -0
  90. package/dist/es5/utils/stuttered-pipe.js.map +1 -0
  91. package/dist/es5/utils/typed-stack.js +23 -0
  92. package/dist/es5/utils/typed-stack.js.map +1 -0
  93. package/dist/es5/utils/under-dash.js +164 -0
  94. package/dist/es5/utils/under-dash.js.map +1 -0
  95. package/dist/es5/utils/utils.js +204 -0
  96. package/dist/es5/utils/utils.js.map +1 -0
  97. package/dist/es5/utils/xml-stream.js +151 -0
  98. package/dist/es5/utils/xml-stream.js.map +1 -0
  99. package/dist/es5/utils/zip-stream.js +78 -0
  100. package/dist/es5/utils/zip-stream.js.map +1 -0
  101. package/dist/es5/xlsx/defaultnumformats.js +230 -0
  102. package/dist/es5/xlsx/defaultnumformats.js.map +1 -0
  103. package/dist/es5/xlsx/rel-type.js +21 -0
  104. package/dist/es5/xlsx/rel-type.js.map +1 -0
  105. package/dist/es5/xlsx/xform/base-xform.js +161 -0
  106. package/dist/es5/xlsx/xform/base-xform.js.map +1 -0
  107. package/dist/es5/xlsx/xform/book/defined-name-xform.js +85 -0
  108. package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -0
  109. package/dist/es5/xlsx/xform/book/sheet-xform.js +32 -0
  110. package/dist/es5/xlsx/xform/book/sheet-xform.js.map +1 -0
  111. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
  112. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +1 -0
  113. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +27 -0
  114. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +1 -0
  115. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +27 -0
  116. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +1 -0
  117. package/dist/es5/xlsx/xform/book/workbook-view-xform.js +51 -0
  118. package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +1 -0
  119. package/dist/es5/xlsx/xform/book/workbook-xform.js +241 -0
  120. package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -0
  121. package/dist/es5/xlsx/xform/comment/comment-xform.js +107 -0
  122. package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -0
  123. package/dist/es5/xlsx/xform/comment/comments-xform.js +76 -0
  124. package/dist/es5/xlsx/xform/comment/comments-xform.js.map +1 -0
  125. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +35 -0
  126. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +1 -0
  127. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +32 -0
  128. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +1 -0
  129. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +53 -0
  130. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +1 -0
  131. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +96 -0
  132. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +1 -0
  133. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +107 -0
  134. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +1 -0
  135. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +92 -0
  136. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -0
  137. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +60 -0
  138. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -0
  139. package/dist/es5/xlsx/xform/composite-xform.js +51 -0
  140. package/dist/es5/xlsx/xform/composite-xform.js.map +1 -0
  141. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +30 -0
  142. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +1 -0
  143. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +27 -0
  144. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +1 -0
  145. package/dist/es5/xlsx/xform/core/app-xform.js +93 -0
  146. package/dist/es5/xlsx/xform/core/app-xform.js.map +1 -0
  147. package/dist/es5/xlsx/xform/core/content-types-xform.js +125 -0
  148. package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -0
  149. package/dist/es5/xlsx/xform/core/core-xform.js +158 -0
  150. package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -0
  151. package/dist/es5/xlsx/xform/core/relationship-xform.js +23 -0
  152. package/dist/es5/xlsx/xform/core/relationship-xform.js.map +1 -0
  153. package/dist/es5/xlsx/xform/core/relationships-xform.js +65 -0
  154. package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -0
  155. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
  156. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +1 -0
  157. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +61 -0
  158. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +1 -0
  159. package/dist/es5/xlsx/xform/drawing/blip-xform.js +39 -0
  160. package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +1 -0
  161. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
  162. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +1 -0
  163. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
  164. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -0
  165. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +82 -0
  166. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +1 -0
  167. package/dist/es5/xlsx/xform/drawing/drawing-xform.js +98 -0
  168. package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +1 -0
  169. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +40 -0
  170. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +1 -0
  171. package/dist/es5/xlsx/xform/drawing/ext-xform.js +38 -0
  172. package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +1 -0
  173. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +38 -0
  174. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +1 -0
  175. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
  176. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +1 -0
  177. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
  178. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +1 -0
  179. package/dist/es5/xlsx/xform/drawing/pic-xform.js +67 -0
  180. package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +1 -0
  181. package/dist/es5/xlsx/xform/drawing/sp-pr.js +30 -0
  182. package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +1 -0
  183. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
  184. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +1 -0
  185. package/dist/es5/xlsx/xform/list-xform.js +85 -0
  186. package/dist/es5/xlsx/xform/list-xform.js.map +1 -0
  187. package/dist/es5/xlsx/xform/pivot-table/cache-field.js +40 -0
  188. package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -0
  189. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +75 -0
  190. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -0
  191. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +104 -0
  192. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -0
  193. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +114 -0
  194. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -0
  195. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +40 -0
  196. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -0
  197. package/dist/es5/xlsx/xform/sheet/cell-xform.js +452 -0
  198. package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -0
  199. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +271 -0
  200. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -0
  201. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
  202. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +1 -0
  203. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
  204. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +1 -0
  205. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +43 -0
  206. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +1 -0
  207. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
  208. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +1 -0
  209. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +42 -0
  210. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +1 -0
  211. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +71 -0
  212. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +1 -0
  213. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +22 -0
  214. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +1 -0
  215. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +41 -0
  216. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +1 -0
  217. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +26 -0
  218. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +1 -0
  219. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +85 -0
  220. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -0
  221. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
  222. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +1 -0
  223. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +52 -0
  224. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +1 -0
  225. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
  226. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +1 -0
  227. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +81 -0
  228. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +1 -0
  229. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
  230. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +1 -0
  231. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +72 -0
  232. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +1 -0
  233. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
  234. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +1 -0
  235. package/dist/es5/xlsx/xform/sheet/col-xform.js +78 -0
  236. package/dist/es5/xlsx/xform/sheet/col-xform.js.map +1 -0
  237. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +249 -0
  238. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -0
  239. package/dist/es5/xlsx/xform/sheet/dimension-xform.js +28 -0
  240. package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +1 -0
  241. package/dist/es5/xlsx/xform/sheet/drawing-xform.js +32 -0
  242. package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +1 -0
  243. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +69 -0
  244. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +1 -0
  245. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +126 -0
  246. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +1 -0
  247. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +50 -0
  248. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +1 -0
  249. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +26 -0
  250. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +1 -0
  251. package/dist/es5/xlsx/xform/sheet/merges.js +52 -0
  252. package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -0
  253. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +35 -0
  254. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +1 -0
  255. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +24 -0
  256. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +1 -0
  257. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +46 -0
  258. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +1 -0
  259. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
  260. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +1 -0
  261. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +99 -0
  262. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +1 -0
  263. package/dist/es5/xlsx/xform/sheet/picture-xform.js +32 -0
  264. package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +1 -0
  265. package/dist/es5/xlsx/xform/sheet/print-options-xform.js +45 -0
  266. package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +1 -0
  267. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +35 -0
  268. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +1 -0
  269. package/dist/es5/xlsx/xform/sheet/row-xform.js +128 -0
  270. package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -0
  271. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +51 -0
  272. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +1 -0
  273. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +83 -0
  274. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +1 -0
  275. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +84 -0
  276. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +1 -0
  277. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +190 -0
  278. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +1 -0
  279. package/dist/es5/xlsx/xform/sheet/table-part-xform.js +32 -0
  280. package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +1 -0
  281. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +515 -0
  282. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -0
  283. package/dist/es5/xlsx/xform/simple/boolean-xform.js +27 -0
  284. package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +1 -0
  285. package/dist/es5/xlsx/xform/simple/date-xform.js +58 -0
  286. package/dist/es5/xlsx/xform/simple/date-xform.js.map +1 -0
  287. package/dist/es5/xlsx/xform/simple/float-xform.js +47 -0
  288. package/dist/es5/xlsx/xform/simple/float-xform.js.map +1 -0
  289. package/dist/es5/xlsx/xform/simple/integer-xform.js +53 -0
  290. package/dist/es5/xlsx/xform/simple/integer-xform.js.map +1 -0
  291. package/dist/es5/xlsx/xform/simple/string-xform.js +47 -0
  292. package/dist/es5/xlsx/xform/simple/string-xform.js.map +1 -0
  293. package/dist/es5/xlsx/xform/static-xform.js +61 -0
  294. package/dist/es5/xlsx/xform/static-xform.js.map +1 -0
  295. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +94 -0
  296. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +1 -0
  297. package/dist/es5/xlsx/xform/strings/rich-text-xform.js +92 -0
  298. package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +1 -0
  299. package/dist/es5/xlsx/xform/strings/shared-string-xform.js +100 -0
  300. package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +1 -0
  301. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +114 -0
  302. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -0
  303. package/dist/es5/xlsx/xform/strings/text-xform.js +39 -0
  304. package/dist/es5/xlsx/xform/strings/text-xform.js.map +1 -0
  305. package/dist/es5/xlsx/xform/style/alignment-xform.js +139 -0
  306. package/dist/es5/xlsx/xform/style/alignment-xform.js.map +1 -0
  307. package/dist/es5/xlsx/xform/style/border-xform.js +185 -0
  308. package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -0
  309. package/dist/es5/xlsx/xform/style/color-xform.js +66 -0
  310. package/dist/es5/xlsx/xform/style/color-xform.js.map +1 -0
  311. package/dist/es5/xlsx/xform/style/dxf-xform.js +106 -0
  312. package/dist/es5/xlsx/xform/style/dxf-xform.js.map +1 -0
  313. package/dist/es5/xlsx/xform/style/fill-xform.js +307 -0
  314. package/dist/es5/xlsx/xform/style/fill-xform.js.map +1 -0
  315. package/dist/es5/xlsx/xform/style/font-xform.js +173 -0
  316. package/dist/es5/xlsx/xform/style/font-xform.js.map +1 -0
  317. package/dist/es5/xlsx/xform/style/numfmt-xform.js +58 -0
  318. package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +1 -0
  319. package/dist/es5/xlsx/xform/style/protection-xform.js +53 -0
  320. package/dist/es5/xlsx/xform/style/protection-xform.js.map +1 -0
  321. package/dist/es5/xlsx/xform/style/style-xform.js +118 -0
  322. package/dist/es5/xlsx/xform/style/style-xform.js.map +1 -0
  323. package/dist/es5/xlsx/xform/style/styles-xform.js +611 -0
  324. package/dist/es5/xlsx/xform/style/styles-xform.js.map +1 -0
  325. package/dist/es5/xlsx/xform/style/underline-xform.js +46 -0
  326. package/dist/es5/xlsx/xform/style/underline-xform.js.map +1 -0
  327. package/dist/es5/xlsx/xform/table/auto-filter-xform.js +75 -0
  328. package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -0
  329. package/dist/es5/xlsx/xform/table/custom-filter-xform.js +30 -0
  330. package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +1 -0
  331. package/dist/es5/xlsx/xform/table/filter-column-xform.js +87 -0
  332. package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -0
  333. package/dist/es5/xlsx/xform/table/filter-xform.js +28 -0
  334. package/dist/es5/xlsx/xform/table/filter-xform.js.map +1 -0
  335. package/dist/es5/xlsx/xform/table/table-column-xform.js +40 -0
  336. package/dist/es5/xlsx/xform/table/table-column-xform.js.map +1 -0
  337. package/dist/es5/xlsx/xform/table/table-style-info-xform.js +38 -0
  338. package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +1 -0
  339. package/dist/es5/xlsx/xform/table/table-xform.js +124 -0
  340. package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -0
  341. package/dist/es5/xlsx/xlsx.js +788 -0
  342. package/dist/es5/xlsx/xlsx.js.map +1 -0
  343. package/dist/es5/xlsx/xml/theme1.js +5 -0
  344. package/dist/es5/xlsx/xml/theme1.js.map +1 -0
  345. package/dist/exceljs.bare.js +60711 -0
  346. package/dist/exceljs.bare.js.map +883 -0
  347. package/dist/exceljs.bare.min.js +45 -0
  348. package/dist/exceljs.bare.min.js.map +1 -0
  349. package/dist/exceljs.js +65487 -0
  350. package/dist/exceljs.js.map +1207 -0
  351. package/dist/exceljs.min.js +45 -0
  352. package/dist/exceljs.min.js.map +1 -0
  353. package/lib/xlsx/xform/strings/shared-string-xform.js +4 -1
  354. package/package.json +1 -1
@@ -0,0 +1,654 @@
1
+ "use strict";
2
+
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ const _ = require('../../utils/under-dash');
9
+ const RelType = require('../../xlsx/rel-type');
10
+ const colCache = require('../../utils/col-cache');
11
+ const Encryptor = require('../../utils/encryptor');
12
+ const Dimensions = require('../../doc/range');
13
+ const StringBuf = require('../../utils/string-buf');
14
+ const Row = require('../../doc/row');
15
+ const Column = require('../../doc/column');
16
+ const SheetRelsWriter = require('./sheet-rels-writer');
17
+ const SheetCommentsWriter = require('./sheet-comments-writer');
18
+ const DataValidations = require('../../doc/data-validations');
19
+ const xmlBuffer = new StringBuf();
20
+
21
+ // ============================================================================================
22
+ // Xforms
23
+ const ListXform = require('../../xlsx/xform/list-xform');
24
+ const DataValidationsXform = require('../../xlsx/xform/sheet/data-validations-xform');
25
+ const SheetPropertiesXform = require('../../xlsx/xform/sheet/sheet-properties-xform');
26
+ const SheetFormatPropertiesXform = require('../../xlsx/xform/sheet/sheet-format-properties-xform');
27
+ const ColXform = require('../../xlsx/xform/sheet/col-xform');
28
+ const RowXform = require('../../xlsx/xform/sheet/row-xform');
29
+ const HyperlinkXform = require('../../xlsx/xform/sheet/hyperlink-xform');
30
+ const SheetViewXform = require('../../xlsx/xform/sheet/sheet-view-xform');
31
+ const SheetProtectionXform = require('../../xlsx/xform/sheet/sheet-protection-xform');
32
+ const PageMarginsXform = require('../../xlsx/xform/sheet/page-margins-xform');
33
+ const PageSetupXform = require('../../xlsx/xform/sheet/page-setup-xform');
34
+ const AutoFilterXform = require('../../xlsx/xform/sheet/auto-filter-xform');
35
+ const PictureXform = require('../../xlsx/xform/sheet/picture-xform');
36
+ const ConditionalFormattingsXform = require('../../xlsx/xform/sheet/cf/conditional-formattings-xform');
37
+ const HeaderFooterXform = require('../../xlsx/xform/sheet/header-footer-xform');
38
+ const RowBreaksXform = require('../../xlsx/xform/sheet/row-breaks-xform');
39
+
40
+ // since prepare and render are functional, we can use singletons
41
+ const xform = {
42
+ dataValidations: new DataValidationsXform(),
43
+ sheetProperties: new SheetPropertiesXform(),
44
+ sheetFormatProperties: new SheetFormatPropertiesXform(),
45
+ columns: new ListXform({
46
+ tag: 'cols',
47
+ length: false,
48
+ childXform: new ColXform()
49
+ }),
50
+ row: new RowXform(),
51
+ hyperlinks: new ListXform({
52
+ tag: 'hyperlinks',
53
+ length: false,
54
+ childXform: new HyperlinkXform()
55
+ }),
56
+ sheetViews: new ListXform({
57
+ tag: 'sheetViews',
58
+ length: false,
59
+ childXform: new SheetViewXform()
60
+ }),
61
+ sheetProtection: new SheetProtectionXform(),
62
+ pageMargins: new PageMarginsXform(),
63
+ pageSeteup: new PageSetupXform(),
64
+ autoFilter: new AutoFilterXform(),
65
+ picture: new PictureXform(),
66
+ conditionalFormattings: new ConditionalFormattingsXform(),
67
+ headerFooter: new HeaderFooterXform(),
68
+ rowBreaks: new RowBreaksXform()
69
+ };
70
+
71
+ // ============================================================================================
72
+
73
+ class WorksheetWriter {
74
+ constructor(options) {
75
+ // in a workbook, each sheet will have a number
76
+ this.id = options.id;
77
+
78
+ // and a name
79
+ this.name = options.name || "Sheet".concat(this.id);
80
+
81
+ // add a state
82
+ this.state = options.state || 'visible';
83
+
84
+ // rows are stored here while they need to be worked on.
85
+ // when they are committed, they will be deleted.
86
+ this._rows = [];
87
+
88
+ // column definitions
89
+ this._columns = null;
90
+
91
+ // column keys (addRow convenience): key ==> this._columns index
92
+ this._keys = {};
93
+
94
+ // keep a record of all row and column pageBreaks
95
+ this._merges = [];
96
+ this._merges.add = function () {}; // ignore cell instruction
97
+
98
+ // keep record of all hyperlinks
99
+ this._sheetRelsWriter = new SheetRelsWriter(options);
100
+ this._sheetCommentsWriter = new SheetCommentsWriter(this, this._sheetRelsWriter, options);
101
+
102
+ // keep a record of dimensions
103
+ this._dimensions = new Dimensions();
104
+
105
+ // first uncommitted row
106
+ this._rowZero = 1;
107
+
108
+ // committed flag
109
+ this.committed = false;
110
+
111
+ // for data validations
112
+ this.dataValidations = new DataValidations();
113
+
114
+ // for sharing formulae
115
+ this._formulae = {};
116
+ this._siFormulae = 0;
117
+
118
+ // keep a record of conditionalFormattings
119
+ this.conditionalFormatting = [];
120
+
121
+ // keep a record of all row and column pageBreaks
122
+ this.rowBreaks = [];
123
+
124
+ // for default row height, outline levels, etc
125
+ this.properties = Object.assign({}, {
126
+ defaultRowHeight: 15,
127
+ dyDescent: 55,
128
+ outlineLevelCol: 0,
129
+ outlineLevelRow: 0
130
+ }, options.properties);
131
+ this.headerFooter = Object.assign({}, {
132
+ differentFirst: false,
133
+ differentOddEven: false,
134
+ oddHeader: null,
135
+ oddFooter: null,
136
+ evenHeader: null,
137
+ evenFooter: null,
138
+ firstHeader: null,
139
+ firstFooter: null
140
+ }, options.headerFooter);
141
+
142
+ // for all things printing
143
+ this.pageSetup = Object.assign({}, {
144
+ margins: {
145
+ left: 0.7,
146
+ right: 0.7,
147
+ top: 0.75,
148
+ bottom: 0.75,
149
+ header: 0.3,
150
+ footer: 0.3
151
+ },
152
+ orientation: 'portrait',
153
+ horizontalDpi: 4294967295,
154
+ verticalDpi: 4294967295,
155
+ fitToPage: !!(options.pageSetup && (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) && !options.pageSetup.scale),
156
+ pageOrder: 'downThenOver',
157
+ blackAndWhite: false,
158
+ draft: false,
159
+ cellComments: 'None',
160
+ errors: 'displayed',
161
+ scale: 100,
162
+ fitToWidth: 1,
163
+ fitToHeight: 1,
164
+ paperSize: undefined,
165
+ showRowColHeaders: false,
166
+ showGridLines: false,
167
+ horizontalCentered: false,
168
+ verticalCentered: false,
169
+ rowBreaks: null,
170
+ colBreaks: null
171
+ }, options.pageSetup);
172
+
173
+ // using shared strings creates a smaller xlsx file but may use more memory
174
+ this.useSharedStrings = options.useSharedStrings || false;
175
+ this._workbook = options.workbook;
176
+ this.hasComments = false;
177
+
178
+ // views
179
+ this._views = options.views || [];
180
+
181
+ // auto filter
182
+ this.autoFilter = options.autoFilter || null;
183
+ this._media = [];
184
+
185
+ // worksheet protection
186
+ this.sheetProtection = null;
187
+
188
+ // start writing to stream now
189
+ this._writeOpenWorksheet();
190
+ this.startedData = false;
191
+ }
192
+ get workbook() {
193
+ return this._workbook;
194
+ }
195
+ get stream() {
196
+ if (!this._stream) {
197
+ // eslint-disable-next-line no-underscore-dangle
198
+ this._stream = this._workbook._openStream("/xl/worksheets/sheet".concat(this.id, ".xml"));
199
+
200
+ // pause stream to prevent 'data' events
201
+ this._stream.pause();
202
+ }
203
+ return this._stream;
204
+ }
205
+
206
+ // destroy - not a valid operation for a streaming writer
207
+ // even though some streamers might be able to, it's a bad idea.
208
+ destroy() {
209
+ throw new Error('Invalid Operation: destroy');
210
+ }
211
+ commit() {
212
+ if (this.committed) {
213
+ return;
214
+ }
215
+ // commit all rows
216
+ this._rows.forEach(cRow => {
217
+ if (cRow) {
218
+ // write the row to the stream
219
+ this._writeRow(cRow);
220
+ }
221
+ });
222
+
223
+ // we _cannot_ accept new rows from now on
224
+ this._rows = null;
225
+ if (!this.startedData) {
226
+ this._writeOpenSheetData();
227
+ }
228
+ this._writeCloseSheetData();
229
+ this._writeAutoFilter();
230
+ this._writeMergeCells();
231
+
232
+ // for some reason, Excel can't handle dimensions at the bottom of the file
233
+ // this._writeDimensions();
234
+
235
+ this._writeHyperlinks();
236
+ this._writeConditionalFormatting();
237
+ this._writeDataValidations();
238
+ this._writeSheetProtection();
239
+ this._writePageMargins();
240
+ this._writePageSetup();
241
+ this._writeBackground();
242
+ this._writeHeaderFooter();
243
+ this._writeRowBreaks();
244
+
245
+ // Legacy Data tag for comments
246
+ this._writeLegacyData();
247
+ this._writeCloseWorksheet();
248
+ // signal end of stream to workbook
249
+ this.stream.end();
250
+ this._sheetCommentsWriter.commit();
251
+ // also commit the hyperlinks if any
252
+ this._sheetRelsWriter.commit();
253
+ this.committed = true;
254
+ }
255
+
256
+ // return the current dimensions of the writer
257
+ get dimensions() {
258
+ return this._dimensions;
259
+ }
260
+ get views() {
261
+ return this._views;
262
+ }
263
+
264
+ // =========================================================================
265
+ // Columns
266
+
267
+ // get the current columns array.
268
+ get columns() {
269
+ return this._columns;
270
+ }
271
+
272
+ // set the columns from an array of column definitions.
273
+ // Note: any headers defined will overwrite existing values.
274
+ set columns(value) {
275
+ // calculate max header row count
276
+ this._headerRowCount = value.reduce((pv, cv) => {
277
+ const headerCount = cv.header && 1 || cv.headers && cv.headers.length || 0;
278
+ return Math.max(pv, headerCount);
279
+ }, 0);
280
+
281
+ // construct Column objects
282
+ let count = 1;
283
+ const columns = this._columns = [];
284
+ value.forEach(defn => {
285
+ const column = new Column(this, count++, false);
286
+ columns.push(column);
287
+ column.defn = defn;
288
+ });
289
+ }
290
+ getColumnKey(key) {
291
+ return this._keys[key];
292
+ }
293
+ setColumnKey(key, value) {
294
+ this._keys[key] = value;
295
+ }
296
+ deleteColumnKey(key) {
297
+ delete this._keys[key];
298
+ }
299
+ eachColumnKey(f) {
300
+ _.each(this._keys, f);
301
+ }
302
+
303
+ // get a single column by col number. If it doesn't exist, it and any gaps before it
304
+ // are created.
305
+ getColumn(c) {
306
+ if (typeof c === 'string') {
307
+ // if it matches a key'd column, return that
308
+ const col = this._keys[c];
309
+ if (col) return col;
310
+
311
+ // otherwise, assume letter
312
+ c = colCache.l2n(c);
313
+ }
314
+ if (!this._columns) {
315
+ this._columns = [];
316
+ }
317
+ if (c > this._columns.length) {
318
+ let n = this._columns.length + 1;
319
+ while (n <= c) {
320
+ this._columns.push(new Column(this, n++));
321
+ }
322
+ }
323
+ return this._columns[c - 1];
324
+ }
325
+
326
+ // =========================================================================
327
+ // Rows
328
+ get _nextRow() {
329
+ return this._rowZero + this._rows.length;
330
+ }
331
+
332
+ // iterate over every uncommitted row in the worksheet, including maybe empty rows
333
+ eachRow(options, iteratee) {
334
+ if (!iteratee) {
335
+ iteratee = options;
336
+ options = undefined;
337
+ }
338
+ if (options && options.includeEmpty) {
339
+ const n = this._nextRow;
340
+ for (let i = this._rowZero; i < n; i++) {
341
+ iteratee(this.getRow(i), i);
342
+ }
343
+ } else {
344
+ this._rows.forEach(row => {
345
+ if (row.hasValues) {
346
+ iteratee(row, row.number);
347
+ }
348
+ });
349
+ }
350
+ }
351
+ _commitRow(cRow) {
352
+ // since rows must be written in order, we commit all rows up till and including cRow
353
+ let found = false;
354
+ while (this._rows.length && !found) {
355
+ const row = this._rows.shift();
356
+ this._rowZero++;
357
+ if (row) {
358
+ this._writeRow(row);
359
+ found = row.number === cRow.number;
360
+ this._rowZero = row.number + 1;
361
+ }
362
+ }
363
+ }
364
+ get lastRow() {
365
+ // returns last uncommitted row
366
+ if (this._rows.length) {
367
+ return this._rows[this._rows.length - 1];
368
+ }
369
+ return undefined;
370
+ }
371
+
372
+ // find a row (if exists) by row number
373
+ findRow(rowNumber) {
374
+ const index = rowNumber - this._rowZero;
375
+ return this._rows[index];
376
+ }
377
+ getRow(rowNumber) {
378
+ const index = rowNumber - this._rowZero;
379
+
380
+ // may fail if rows have been comitted
381
+ if (index < 0) {
382
+ throw new Error('Out of bounds: this row has been committed');
383
+ }
384
+ let row = this._rows[index];
385
+ if (!row) {
386
+ this._rows[index] = row = new Row(this, rowNumber);
387
+ }
388
+ return row;
389
+ }
390
+ addRow(value) {
391
+ const row = new Row(this, this._nextRow);
392
+ this._rows[row.number - this._rowZero] = row;
393
+ row.values = value;
394
+ return row;
395
+ }
396
+
397
+ // ================================================================================
398
+ // Cells
399
+
400
+ // returns the cell at [r,c] or address given by r. If not found, return undefined
401
+ findCell(r, c) {
402
+ const address = colCache.getAddress(r, c);
403
+ const row = this.findRow(address.row);
404
+ return row ? row.findCell(address.column) : undefined;
405
+ }
406
+
407
+ // return the cell at [r,c] or address given by r. If not found, create a new one.
408
+ getCell(r, c) {
409
+ const address = colCache.getAddress(r, c);
410
+ const row = this.getRow(address.row);
411
+ return row.getCellEx(address);
412
+ }
413
+ mergeCells() {
414
+ for (var _len = arguments.length, cells = new Array(_len), _key = 0; _key < _len; _key++) {
415
+ cells[_key] = arguments[_key];
416
+ }
417
+ // may fail if rows have been comitted
418
+ const dimensions = new Dimensions(cells);
419
+
420
+ // check cells aren't already merged
421
+ this._merges.forEach(merge => {
422
+ if (merge.intersects(dimensions)) {
423
+ throw new Error('Cannot merge already merged cells');
424
+ }
425
+ });
426
+
427
+ // apply merge
428
+ const master = this.getCell(dimensions.top, dimensions.left);
429
+ for (let i = dimensions.top; i <= dimensions.bottom; i++) {
430
+ for (let j = dimensions.left; j <= dimensions.right; j++) {
431
+ if (i > dimensions.top || j > dimensions.left) {
432
+ this.getCell(i, j).merge(master);
433
+ }
434
+ }
435
+ }
436
+
437
+ // index merge
438
+ this._merges.push(dimensions);
439
+ }
440
+
441
+ // ===========================================================================
442
+ // Conditional Formatting
443
+ addConditionalFormatting(cf) {
444
+ this.conditionalFormatting.push(cf);
445
+ }
446
+ removeConditionalFormatting(filter) {
447
+ if (typeof filter === 'number') {
448
+ this.conditionalFormatting.splice(filter, 1);
449
+ } else if (filter instanceof Function) {
450
+ this.conditionalFormatting = this.conditionalFormatting.filter(filter);
451
+ } else {
452
+ this.conditionalFormatting = [];
453
+ }
454
+ }
455
+
456
+ // =========================================================================
457
+
458
+ addBackgroundImage(imageId) {
459
+ this._background = {
460
+ imageId
461
+ };
462
+ }
463
+ getBackgroundImageId() {
464
+ return this._background && this._background.imageId;
465
+ }
466
+
467
+ // =========================================================================
468
+ // Worksheet Protection
469
+ protect(password, options) {
470
+ // TODO: make this function truly async
471
+ // perhaps marshal to worker thread or something
472
+ return new Promise(resolve => {
473
+ this.sheetProtection = {
474
+ sheet: true
475
+ };
476
+ if (options && 'spinCount' in options) {
477
+ // force spinCount to be integer >= 0
478
+ options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000;
479
+ }
480
+ if (password) {
481
+ this.sheetProtection.algorithmName = 'SHA-512';
482
+ this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64');
483
+ this.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount
484
+ this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(password, 'SHA512', this.sheetProtection.saltValue, this.sheetProtection.spinCount);
485
+ }
486
+ if (options) {
487
+ this.sheetProtection = Object.assign(this.sheetProtection, options);
488
+ if (!password && 'spinCount' in options) {
489
+ delete this.sheetProtection.spinCount;
490
+ }
491
+ }
492
+ resolve();
493
+ });
494
+ }
495
+ unprotect() {
496
+ this.sheetProtection = null;
497
+ }
498
+
499
+ // ================================================================================
500
+
501
+ _write(text) {
502
+ xmlBuffer.reset();
503
+ xmlBuffer.addText(text);
504
+ this.stream.write(xmlBuffer);
505
+ }
506
+ _writeSheetProperties(xmlBuf, properties, pageSetup) {
507
+ const sheetPropertiesModel = {
508
+ outlineProperties: properties && properties.outlineProperties,
509
+ tabColor: properties && properties.tabColor,
510
+ pageSetup: pageSetup && pageSetup.fitToPage ? {
511
+ fitToPage: pageSetup.fitToPage
512
+ } : undefined
513
+ };
514
+ xmlBuf.addText(xform.sheetProperties.toXml(sheetPropertiesModel));
515
+ }
516
+ _writeSheetFormatProperties(xmlBuf, properties) {
517
+ const sheetFormatPropertiesModel = properties ? {
518
+ defaultRowHeight: properties.defaultRowHeight,
519
+ dyDescent: properties.dyDescent,
520
+ outlineLevelCol: properties.outlineLevelCol,
521
+ outlineLevelRow: properties.outlineLevelRow
522
+ } : undefined;
523
+ if (properties.defaultColWidth) {
524
+ sheetFormatPropertiesModel.defaultColWidth = properties.defaultColWidth;
525
+ }
526
+ xmlBuf.addText(xform.sheetFormatProperties.toXml(sheetFormatPropertiesModel));
527
+ }
528
+ _writeOpenWorksheet() {
529
+ xmlBuffer.reset();
530
+ xmlBuffer.addText('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
531
+ xmlBuffer.addText('<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"' + ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"' + ' xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"' + ' mc:Ignorable="x14ac"' + ' xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">');
532
+ this._writeSheetProperties(xmlBuffer, this.properties, this.pageSetup);
533
+ xmlBuffer.addText(xform.sheetViews.toXml(this.views));
534
+ this._writeSheetFormatProperties(xmlBuffer, this.properties);
535
+ this.stream.write(xmlBuffer);
536
+ }
537
+ _writeColumns() {
538
+ const cols = Column.toModel(this.columns);
539
+ if (cols) {
540
+ xform.columns.prepare(cols, {
541
+ styles: this._workbook.styles
542
+ });
543
+ this.stream.write(xform.columns.toXml(cols));
544
+ }
545
+ }
546
+ _writeOpenSheetData() {
547
+ this._write('<sheetData>');
548
+ }
549
+ _writeRow(row) {
550
+ if (!this.startedData) {
551
+ this._writeColumns();
552
+ this._writeOpenSheetData();
553
+ this.startedData = true;
554
+ }
555
+ if (row.hasValues || row.height) {
556
+ const model = row.model;
557
+ const options = {
558
+ styles: this._workbook.styles,
559
+ sharedStrings: this.useSharedStrings ? this._workbook.sharedStrings : undefined,
560
+ hyperlinks: this._sheetRelsWriter.hyperlinksProxy,
561
+ merges: this._merges,
562
+ formulae: this._formulae,
563
+ siFormulae: this._siFormulae,
564
+ comments: []
565
+ };
566
+ xform.row.prepare(model, options);
567
+ this.stream.write(xform.row.toXml(model));
568
+ if (options.comments.length) {
569
+ this.hasComments = true;
570
+ this._sheetCommentsWriter.addComments(options.comments);
571
+ }
572
+ }
573
+ }
574
+ _writeCloseSheetData() {
575
+ this._write('</sheetData>');
576
+ }
577
+ _writeMergeCells() {
578
+ if (this._merges.length) {
579
+ xmlBuffer.reset();
580
+ xmlBuffer.addText("<mergeCells count=\"".concat(this._merges.length, "\">"));
581
+ this._merges.forEach(merge => {
582
+ xmlBuffer.addText("<mergeCell ref=\"".concat(merge, "\"/>"));
583
+ });
584
+ xmlBuffer.addText('</mergeCells>');
585
+ this.stream.write(xmlBuffer);
586
+ }
587
+ }
588
+ _writeHyperlinks() {
589
+ // eslint-disable-next-line no-underscore-dangle
590
+ this.stream.write(xform.hyperlinks.toXml(this._sheetRelsWriter._hyperlinks));
591
+ }
592
+ _writeConditionalFormatting() {
593
+ const options = {
594
+ styles: this._workbook.styles
595
+ };
596
+ xform.conditionalFormattings.prepare(this.conditionalFormatting, options);
597
+ this.stream.write(xform.conditionalFormattings.toXml(this.conditionalFormatting));
598
+ }
599
+ _writeRowBreaks() {
600
+ this.stream.write(xform.rowBreaks.toXml(this.rowBreaks));
601
+ }
602
+ _writeDataValidations() {
603
+ this.stream.write(xform.dataValidations.toXml(this.dataValidations.model));
604
+ }
605
+ _writeSheetProtection() {
606
+ this.stream.write(xform.sheetProtection.toXml(this.sheetProtection));
607
+ }
608
+ _writePageMargins() {
609
+ this.stream.write(xform.pageMargins.toXml(this.pageSetup.margins));
610
+ }
611
+ _writePageSetup() {
612
+ this.stream.write(xform.pageSeteup.toXml(this.pageSetup));
613
+ }
614
+ _writeHeaderFooter() {
615
+ this.stream.write(xform.headerFooter.toXml(this.headerFooter));
616
+ }
617
+ _writeAutoFilter() {
618
+ this.stream.write(xform.autoFilter.toXml(this.autoFilter));
619
+ }
620
+ _writeBackground() {
621
+ if (this._background) {
622
+ if (this._background.imageId !== undefined) {
623
+ const image = this._workbook.getImage(this._background.imageId);
624
+ const pictureId = this._sheetRelsWriter.addMedia({
625
+ Target: "../media/".concat(image.name),
626
+ Type: RelType.Image
627
+ });
628
+ this._background = _objectSpread(_objectSpread({}, this._background), {}, {
629
+ rId: pictureId
630
+ });
631
+ }
632
+ this.stream.write(xform.picture.toXml({
633
+ rId: this._background.rId
634
+ }));
635
+ }
636
+ }
637
+ _writeLegacyData() {
638
+ if (this.hasComments) {
639
+ xmlBuffer.reset();
640
+ xmlBuffer.addText("<legacyDrawing r:id=\"".concat(this._sheetCommentsWriter.vmlRelId, "\"/>"));
641
+ this.stream.write(xmlBuffer);
642
+ }
643
+ }
644
+ _writeDimensions() {
645
+ // for some reason, Excel can't handle dimensions at the bottom of the file
646
+ // and we don't know the dimensions until the commit, so don't write them.
647
+ // this._write('<dimension ref="' + this._dimensions + '"/>');
648
+ }
649
+ _writeCloseWorksheet() {
650
+ this._write('</worksheet>');
651
+ }
652
+ }
653
+ module.exports = WorksheetWriter;
654
+ //# sourceMappingURL=worksheet-writer.js.map